<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3553156908352119879</id><updated>2026-09-13T00:56:35.921-07:00</updated><category term="Tute"/><category term="Android"/><category term="HTML"/><category term="php"/><category term="Fix"/><category term="algorithms"/><category term="data structures"/><category term="CSS"/><category term="JavaScript"/><category term="Snippet"/><category term="java"/><category term="JQuery"/><category term="Ubuntu"/><category term="WSO2"/><category term="python"/><category term="AJAX"/><category term="GSOC"/><category term="Haskell"/><category term="JSON"/><category term="Meteor"/><category term="REST"/><category term="pygame"/><category term="xml"/><category term=".NET"/><category term="API"/><category term="Bubble Sort"/><category term="C#"/><category term="Identity Server"/><category term="Insertion Sort"/><category term="Laravel"/><category term="ReactJs"/><category term="SOAP"/><category term="UDP"/><category term="VB"/><category term="XACML"/><category term="beginner"/><category term="fetch"/><category term="game-dev"/><category term="selection sort"/><category term="vector"/><title type='text'>ManZzup&#39;z TutZ</title><subtitle type='html'>What a world?</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-6713414890690378469</id><published>2017-04-03T11:25:00.000-07:00</published><updated>2017-04-03T11:25:29.345-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="API"/><category scheme="http://www.blogger.com/atom/ns#" term="fetch"/><category scheme="http://www.blogger.com/atom/ns#" term="Fix"/><category scheme="http://www.blogger.com/atom/ns#" term="ReactJs"/><title type='text'>Resolving fetchMock issues when testing isomorphic-fetch [Reactjs]</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi peeps,&lt;br /&gt;
&lt;br /&gt;
This is a quickie, and the content is totally &lt;i&gt;reactjs&lt;/i&gt;.&lt;br /&gt;
If you are using &lt;i&gt;fetchMock&lt;/i&gt; to simulate your API requests and you happend to use&amp;nbsp;&lt;i&gt;isomorphic-fetch &lt;/i&gt;for better support of &lt;i&gt;fetch&lt;/i&gt; in browsers, you might have noticed that how &lt;i&gt;fetchMock&lt;/i&gt; doesn&#39;t work. The solution is that you have to change the&amp;nbsp;isomorphic-fetch import as below&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;import fetch from&amp;nbsp;isomorphic-fetch&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
should be changed to&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;import isomorphic-fetch&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
This is highlighted in the fetchMock documentation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/6713414890690378469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2017/04/resolving-fetchmock-issues-when-testing.html#comment-form' title='18 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/6713414890690378469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/6713414890690378469'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2017/04/resolving-fetchmock-issues-when-testing.html' title='Resolving fetchMock issues when testing isomorphic-fetch [Reactjs]'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-1952555610298365623</id><published>2017-02-15T03:53:00.001-08:00</published><updated>2017-02-15T03:53:42.858-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fix"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Using Google Clound Platform SDK installer behind a proxy</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
In the latest version of Google App Engine SDK, the SDK comes as a part of the Google Cloud Platform SDK. (There&#39;s an option to select between that or the legacy SDK). But since new is always better, I tried out the new SDK installer.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s the python 2.7 installer for 64bit systems link :&lt;br /&gt;
&lt;br /&gt;
Then I simply followed the instructions, which is to extract the files to *anywhere* and then simply run the install.sh script. This script basically adds aliases to the bashrc and downloads some components from the google servers. The issue is that I was behind a proxy and there was no instruction available on how to configure the installer script to use the proxy. So here&#39;s how.&lt;br /&gt;
&lt;br /&gt;
Run the following commands replacing the proxy settings as necessary&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/uG9ACcKf&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/1952555610298365623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2017/02/using-google-clound-platform-sdk.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1952555610298365623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1952555610298365623'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2017/02/using-google-clound-platform-sdk.html' title='Using Google Clound Platform SDK installer behind a proxy'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-6381043136895358095</id><published>2016-11-23T12:48:00.001-08:00</published><updated>2017-01-03T19:11:02.765-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="pygame"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>Developing a 2D Board game with Python / Pygame : Part 2</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi all,&lt;br /&gt;
&lt;br /&gt;
Please check &lt;a href=&quot;http://manzzup.blogspot.com/2016/11/developing-2d-board-game-with-python.html&quot;&gt;Part 1&lt;/a&gt;&amp;nbsp;before continuing to this section&lt;br /&gt;
In the last section, we covered board generation, leaving the actual network connectivity creation to this section.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Part 2 : Connecting to the server&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Step 1 : Configure the game server&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
The given server (included in the github link), is made in C# as a Visual Studio Solution. Thus to run it&lt;br /&gt;
1) Download and extract the source&lt;br /&gt;
2) Install Visual Studio&lt;br /&gt;
3) Open&amp;nbsp;lk.ac.mrt.cse.pc11/Tanks_server.sln&lt;br /&gt;
4) Once done, run the solution to open up the UI and the CLI&lt;br /&gt;
&lt;br /&gt;
NOTE: IF you need to access the server from another machine, you need to make it listen to an interface IP. For that open up App.config and change the IP Address to something you get from ipconfig command.&lt;br /&gt;
&lt;br /&gt;
Now with some analysis of the code and structure of the game server, the following can be seen.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
1) We need to initialize a socket connection to the game server on the port 6000&lt;br /&gt;
2) As soon as we initialize and send the command &quot;JOIN#&quot; to game server, server will reply back to port 7000/&lt;br /&gt;
3) Thus, before sending the Join command we need to start a server on our client side that listens to port 7000.&lt;br /&gt;
4) Once that is initialized, our server continue to listen to the commands from the game server, through which various updates are taken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Step 2 : Initialize socket connection&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
To ease everyone&#39;s life, I came up with a ServerClient class that handles all the things mentioned above. So in order to connect, all you need is to import the class and call the methods accordingly.&lt;br /&gt;
First save the socketclient.py which contains the ServerClient&amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ManZzup/189f3f983ff9f669183246c47781d91b.js&quot;&gt;&lt;/script&gt;

Now we use this class to connect to the server,&lt;br /&gt;
&lt;br /&gt;
Note: Here the IP I have added is an external one since my server is running on a different machine. If you have both your client and Game server in the same machine, use 127.0.0.1 instead.&lt;br /&gt;
&lt;br /&gt;
Save the below code as the new tank.py and run it. (Make sure the game server is running first). If all goes okay, you will see a string in the form &quot;I:P:0....&quot; printing on your console output. And the game server CLI output will show some text that says you have connected.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ManZzup/0e47d865cf6fa7880d09088111d44e28.js&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;u&gt;Step 3 : Drawing the board&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Now that we can connect to the Game server and properly talk with it, next is to decode the board explanation given by the game server into graphical interface itself.&lt;br /&gt;
&lt;br /&gt;
The format of the initialization code is&lt;br /&gt;
&lt;b&gt;I:P0:&amp;lt;list of brick cordinates&amp;gt;:&amp;lt;list of stone wall cordinates&amp;gt;:&amp;lt;list of water cordinates&amp;gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
So we simply do some splits and get cordinates of each element and draw them on our board. Since we have only implemented Brick walls in the sample I will show how to draw in the following code.&lt;br /&gt;
&lt;br /&gt;
Once you run the tanks.py (remember that you need to close the game server and re run it before running your tanks.py, EVERYTIME), you will see that the Brick walls are shown on your interface in the same places as shown in the game server UI.&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ManZzup/74b03481e2e78e5228454f7498b13c4d.js&quot;&gt;&lt;/script&gt;

Okaaaay, so now you have the basic connectivity working, and I believe that you can continue building from here onwards. First make sure you add the logic to show all 4 different terrain types. Then make new Sprites, Coin and Lifepack and add them the same way we have used before.&lt;br /&gt;
&lt;br /&gt;
I will try to update some future posts on the development, like auto vanishing coins and animations, but I guess this would work for now.&lt;br /&gt;
&lt;br /&gt;
Cyah all&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/6381043136895358095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2016/11/developing-2d-board-game-with-python_23.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/6381043136895358095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/6381043136895358095'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2016/11/developing-2d-board-game-with-python_23.html' title='Developing a 2D Board game with Python / Pygame : Part 2'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-5399447156471143012</id><published>2016-11-22T15:44:00.001-08:00</published><updated>2017-01-03T19:13:07.196-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="game-dev"/><category scheme="http://www.blogger.com/atom/ns#" term="pygame"/><category scheme="http://www.blogger.com/atom/ns#" term="python"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><title type='text'>Developing a 2D Board game with Python / Pygame : Part 1</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi all,&lt;br /&gt;
Quick introduction is the game is called Tanks and more details about the game will follow later since right now is time critical.&lt;br /&gt;
But just to begin,&lt;br /&gt;
1) The board is a 20x20 grid&lt;br /&gt;
2) 5 players play at the same time&lt;br /&gt;
3) There are 4 different times of terrain - Ground, Brick wall, Water, Stone wall&lt;br /&gt;
5) Other sprites include coins and health packs&lt;br /&gt;
6) Multiplayer, it communicated through a central socket-server &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;u&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;What you need&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
1) python 2.7 installed&lt;br /&gt;
2) &lt;a href=&quot;http://pygame.org/hifi.html&quot; target=&quot;_blank&quot;&gt;pygame&lt;/a&gt; library installed&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
pygame is available as a standalone installer for windows, for most unix releases you can get it through standard repos (package python-pygame)&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;
&lt;u&gt;&lt;span style=&quot;font-size: large;&quot;&gt;What is pygame&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
A very small 2D game development engine. It just covers the basic graphics handling like dealing with the graphics drivers and all, but on the other hand it leaves us with a lot of flexibility in coding. Also the learning curve for the syntax is almost non-existing! If you know your python, this is a piece of cake. If not well still learning python is pretty easy :D&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Part 1 : Board generation&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
All the codes will be available on&lt;a href=&quot;https://github.com/ManZzup/Tanks&quot;&gt; https://github.com/ManZzup/Tanks&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In this section I would quickly cover the basics of pygame, and how to generate a board from a given input. I said generate because we will only receive a set of instructions from our multiplayer server. So we will construct the game generation accordingly.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Step 1 : Introducing pygame&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This program just opens up a window and print some images on to it. This is the fundamental of game creation. If we need to animate all we need is to extend this to draw the same images again and again in a very rapid motion.So if you know to draw an image and to clear it, you can basically do animations!&lt;br /&gt;
&lt;br /&gt;
Save this as tanks.py and run (python tanks.py)&lt;br /&gt;
If all goes good (fingers crossed) you will see a black screen with your image on it. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ManZzup/e3bdbf1cc3762711ff6e8b92e4091d38.js&quot;&gt;&lt;/script&gt;

&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;Step 2 : Making board cell&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Let&#39;s get down to the real thing. SO to start off as i mentioned there are 4 types of board cells:&lt;br /&gt;
1) Ground cell&lt;br /&gt;
2) Water cell&lt;br /&gt;
3) Brick wall cell&lt;br /&gt;
4) Stone wall cell&lt;br /&gt;
&lt;br /&gt;
So in pygame, each of these are called &lt;a href=&quot;http://www.pygame.org/docs/ref/sprite.html&quot; target=&quot;_blank&quot;&gt;Sprites&lt;/a&gt; (read about them at pygame docs). Basically we would create python classes that extend the pygame.sprite.Sprite class&lt;br /&gt;
Why-- because Sprites deal with alot of other things like collision detection, Groups bla bla we&#39;ll come to them later&lt;br /&gt;
We start off by making a Ground Cell&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ManZzup/3b038a1414cbbb77c9af0c162fb037e3.js&quot;&gt;&lt;/script&gt;

Make sure you put ALL YOUR image files as the SAME directory as the script&lt;br /&gt;
Now let&#39;s modify our tanks.py to see how our cell looks like&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/ManZzup/ab51ef12eee8e485c3c189e1bd5d87a0.js&quot;&gt;&lt;/script&gt;

When you run with python tanks.py you will see a small brown square in a huge black screen. IT WORKS!&lt;br /&gt;
Now i assume that you did the same for other cells as well, so i won&#39;t be covering that.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 3 : Making the Board Class&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Our board class is basically a data structure that would hold&lt;br /&gt;
1) A data grid (2D int array)&lt;br /&gt;
2) All the cell sprites for all 400 cells&lt;br /&gt;
3) Any other board related info&lt;br /&gt;
&lt;br /&gt;
So th following Board class defines all these. Note the concept of Group (&lt;a href=&quot;http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Group&quot;&gt;pygame.sprite.Group&lt;/a&gt;) used here. A Group is a set of Sprites, the advantage is that when we group similar Sprites, we can apply some functions like drawing, scaling, collision detection onto them as a group.&lt;br /&gt;
Saves us a lot of coding and also it is efficient.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;What&#39;s the data grid&lt;/u&gt;&lt;br /&gt;
Since our server will send us the info about various units in a very complicated form, I decided that those should be stored in a very efficient manner. SO the option I selected was to use an integer array (2D int array) to define each cell of our board. So how we define all the elements we have is here&lt;br /&gt;
&lt;br /&gt;
We use 0 to indicate a Ground cell&lt;br /&gt;
0&amp;nbsp;&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; Ground cell&lt;br /&gt;
-1&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; Brick cell&lt;br /&gt;
-2&amp;nbsp;&amp;nbsp; -&amp;nbsp;&amp;nbsp; Stone cell&lt;br /&gt;
.....&lt;br /&gt;
10&amp;nbsp; -&amp;nbsp;&amp;nbsp;&amp;nbsp; Player 1 Direction North&lt;br /&gt;
11&amp;nbsp; - &amp;nbsp;&amp;nbsp; Player 2 Direction East&lt;br /&gt;
12&lt;br /&gt;
13&lt;br /&gt;
&lt;br /&gt;
20&amp;nbsp; - &amp;nbsp; Player 2 Direction North&lt;br /&gt;
&lt;br /&gt;
and likewise&lt;br /&gt;
&lt;br /&gt;
So by referring to the above chart, in our Board class, first we define a method that would get the positions of each elements, populated by the server and mention them in the grid.&lt;br /&gt;
&lt;br /&gt;
And the second method, draw_board is to loop those elements and construct the board by fixing the relevant cells.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;lt;&amp;lt;code to be added, check github&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again I assumed that you complete the above chart in a way that suits you plus the Cell classes.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step 4 : Check board generation&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Finally we just need to check if our board generation works. First we create a board instance and then manually feed the location of some brick walls. See that we just send a list of positions, just as we get them from the game server. This way when we finally communicate with server, we have less work to do on our side.&lt;br /&gt;
&lt;br /&gt;
Then we call the draw_board function finally the cells.draw() function&lt;br /&gt;
Here&#39;s where the Group came useful. If not for the cells Group, we would have to iterate each and every cell and blit it to the screen. But here Group takes care of it ^_^.&lt;br /&gt;
&lt;br /&gt;
Check your code with the following modified tanks.py&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;again due to some error, please check the code at github&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DONE! So the first step is done, now i would say around 15% is completed. (Given that you take the extra step and construct the other cells, and do MODIFICATIONS as necessary)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ-67ptfeloLlYAxJwqJ2EUYuW_uDBx8eJB6QZOWiKUD4awrcvkw2RBKhJ-C1hDL5q_Q-2gSN-bZToD1ZXsJVK_3yaSymhfnJDnxADG_mLJDvPkG_rEXaG22xfDQOR1tCePMiWRmYNjGmL/s1600/Screenshot+from+2016-11-22+23-40-22.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;548&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ-67ptfeloLlYAxJwqJ2EUYuW_uDBx8eJB6QZOWiKUD4awrcvkw2RBKhJ-C1hDL5q_Q-2gSN-bZToD1ZXsJVK_3yaSymhfnJDnxADG_mLJDvPkG_rEXaG22xfDQOR1tCePMiWRmYNjGmL/s640/Screenshot+from+2016-11-22+23-40-22.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Next is to communicate with the server,coming in Part 2.&lt;br /&gt;
&lt;br /&gt;
Cyah&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/5399447156471143012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2016/11/developing-2d-board-game-with-python.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5399447156471143012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5399447156471143012'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2016/11/developing-2d-board-game-with-python.html' title='Developing a 2D Board game with Python / Pygame : Part 1'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJ-67ptfeloLlYAxJwqJ2EUYuW_uDBx8eJB6QZOWiKUD4awrcvkw2RBKhJ-C1hDL5q_Q-2gSN-bZToD1ZXsJVK_3yaSymhfnJDnxADG_mLJDvPkG_rEXaG22xfDQOR1tCePMiWRmYNjGmL/s72-c/Screenshot+from+2016-11-22+23-40-22.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-4844365351029021327</id><published>2016-08-12T08:54:00.000-07:00</published><updated>2017-01-03T19:12:52.266-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GSOC"/><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="REST"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><category scheme="http://www.blogger.com/atom/ns#" term="WSO2"/><category scheme="http://www.blogger.com/atom/ns#" term="xml"/><title type='text'>Writing integration tests for Apache CXF REST API that supports XML and JSON</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey folks,&lt;br /&gt;
&lt;br /&gt;
This comes up as a part of my ongoing GSoC project. The task as described in an earlier post was simple. To convert a SOAP service to REST. Yet the individual issues that comes up along the way sums up to writing those separate blog posts about them.&lt;br /&gt;
&lt;br /&gt;
So this is the last phase of the project that I&#39;m currently carrying out, that is to write integration tests for the now available REST web service. Now have the following assumptions before we go through the procedure&lt;br /&gt;
&lt;br /&gt;
1) The service is implemented with Apache CXF and JAX-RS&lt;br /&gt;
2) It can consume and produce both XML and JSON based requests and responses&lt;br /&gt;
3) Service is up and running and accessible at &lt;i&gt;https://localhost:5000/rest&lt;/i&gt;&lt;br /&gt;
4) Service has a one service method called &lt;b&gt;getResponse&lt;/b&gt;&amp;nbsp;that accepts &lt;i&gt;XML&lt;/i&gt; or &lt;i&gt;JSON&lt;/i&gt; requests (in a predefined way) and outputs according to the headers given.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;Issue&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Issue now is that although we can easily write unit tests for any given piece of code, writing unit tests for the web service api is just pointless. We need to be able to test the service online it self whenever we make a change to see that everything works good (the whole point of testing). So what we need are integration tests.&lt;br /&gt;
Moreover since my request/response architecture supports &lt;i&gt;XML&lt;/i&gt; and &lt;i&gt;JSON&lt;/i&gt; I should be able to send corresponding requests and check if I am getting the desired responses. So let&#39;s dig into the steps.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;Steps&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
1) Add all dependencies&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
We need 2 things for our code to work&lt;br /&gt;
i) Apache CXF&lt;br /&gt;
ii) TestNG (Or if you preper you can use JUnit as well)&lt;br /&gt;
&lt;br /&gt;
Since my project is all maven based, I will show how to add the required dependencies using maven. If you use any other dependency management software, feel free to find the libraries appropriately.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/EZdKXq5t&quot;&gt;&lt;/script&gt;&lt;br /&gt;
2) Prepare the directory structure&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Before going into code we need to structure our codes so that the test classes doesn&#39;t mess up with our source code. Also keep in mind that since we have to test XML/JSON requests/responses we need to store these code files somewhere and read them as well. Hardcoding them inside the test classes would be an ugly option. So we have 3 things to keep apart from each other&lt;br /&gt;
i) Source code&lt;br /&gt;
ii) Test classes&lt;br /&gt;
iii) &lt;i&gt;XML&lt;/i&gt;/&lt;i&gt;JSON&lt;/i&gt; codes&lt;br /&gt;
&lt;br /&gt;
Here&#39;s how I managed to seperate those&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia4eVbaVHxYz3FM_eNkgraYtZ1_2H6_EXK3ghJCLYGCHO3C8MNoWBB1hyphenhyphenI2MApyDlvS5WeCeQXxMTMWDh5K0RghnfGKbSabjNupiUc4MvbzxBcJnTRdbVN_GybjvW-nynkpu4lZiT0dZC9/s1600/dir.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia4eVbaVHxYz3FM_eNkgraYtZ1_2H6_EXK3ghJCLYGCHO3C8MNoWBB1hyphenhyphenI2MApyDlvS5WeCeQXxMTMWDh5K0RghnfGKbSabjNupiUc4MvbzxBcJnTRdbVN_GybjvW-nynkpu4lZiT0dZC9/s640/dir.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
There are 2 main directories under the src directory&lt;br /&gt;
i) &lt;b&gt;main&lt;/b&gt; : contains source code and it&#39;s resources&lt;br /&gt;
ii) &lt;b&gt;test&lt;/b&gt; : contains test classes and it&#39;s resources&lt;br /&gt;
&lt;br /&gt;
Since &lt;i&gt;XML&lt;/i&gt;/&lt;i&gt;JSON&lt;/i&gt; codes are part of the test classes, they are put within the &lt;b&gt;resources&lt;/b&gt; directory under &lt;b&gt;test&lt;/b&gt; directory.&lt;br /&gt;
&lt;br /&gt;
3) So now we are ready to start with the code. First make a single class named &lt;i&gt;TestService&lt;/i&gt; which extend &lt;i&gt;Assert&lt;/i&gt; class under the &lt;b&gt;test&lt;/b&gt; directory. (Chose the package names appropriately)&lt;br /&gt;
&lt;br /&gt;
4) First we write a simple method to check if the service is online, if it&#39;s offline we cannot do any integration test on it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/WHMi7wcZ&quot;&gt;&lt;/script&gt;&lt;b&gt;&lt;br /&gt;

NOTE:&lt;/b&gt; If your service is secure (https), then probably the java WebClient will need to verify the certificates before any request can be made. If such verification cannot be done, an exception would occur. The easiest way to overcome is to make up your own keystore and specify the path to the &lt;u&gt;keystore&lt;/u&gt; or &lt;u&gt;truststore&lt;/u&gt; from the code. You can easily google that step, anyhow I added the following to the constructor of &lt;i&gt;TestService&lt;/i&gt; class to mention the location of the trustStore to the &lt;i&gt;WebClient&lt;/i&gt;. (This corresponds only according to my own configuration)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/Jeb3gR75&quot;&gt;&lt;/script&gt;&lt;br /&gt;
5) Everything&#39;s ready to go but we need to make some mock XML/JSON requests and responses first.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;request-getResponse-1.xml&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/vL17BAR3&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;i&gt;response-getResponse-1.xml&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/N8e5kBpM&quot;&gt;&lt;/script&gt;&lt;br /&gt;
Keep those files in the &lt;b&gt;xml&lt;/b&gt; directory under the &lt;b&gt;resources&lt;/b&gt;.&lt;br /&gt;
Assume that when we send the contents of &lt;i&gt;request-getResponse-1.xml&lt;/i&gt; over to the &lt;b&gt;getResponse &lt;/b&gt;service method, we receive the response with the content in &lt;i&gt;response-getResponse-1.xml&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Next we need a method to read the content from those 2 files. Here&#39;s a neat method that does the job, note that the string replacement at the end makes sure that things work correctly when we have to do assertEqual at the desired and actual responses at the end.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/swGbUpPt&quot;&gt;&lt;/script&gt;&lt;br /&gt;
7) Let&#39;s write our first test method now&lt;br /&gt;
You can change / add / remove the headers as necessary, and keep in mind that this suits to a service method that reads the body of the request and processes it. If you play around a bit you can find the way to send any type of request to a service.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/MjwX669L&quot;&gt;&lt;/script&gt;&lt;br /&gt;
8) Here&#39;s the full code when all put together, and now you test the code. And TA-DAA&lt;br /&gt;
All test cases passed!&lt;br /&gt;
&lt;br /&gt;
If you get any test case failures check the outputs of response and webResponse to see what&#39;s going wrong. So happy testing!&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/zMAa5C8B&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;Reference&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
https://cwiki.apache.org/confluence/display/CXF20DOC/JAXRS+Testing&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/4844365351029021327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2016/08/writing-integration-tests-for-apache.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/4844365351029021327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/4844365351029021327'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2016/08/writing-integration-tests-for-apache.html' title='Writing integration tests for Apache CXF REST API that supports XML and JSON'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEia4eVbaVHxYz3FM_eNkgraYtZ1_2H6_EXK3ghJCLYGCHO3C8MNoWBB1hyphenhyphenI2MApyDlvS5WeCeQXxMTMWDh5K0RghnfGKbSabjNupiUc4MvbzxBcJnTRdbVN_GybjvW-nynkpu4lZiT0dZC9/s72-c/dir.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-7817940199298763704</id><published>2016-08-05T21:43:00.003-07:00</published><updated>2017-01-03T19:13:38.057-08:00</updated><title type='text'>[GSoC 2016] REST implementation for WSO2 IS Entitlement Service</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi all,&lt;br /&gt;
&lt;br /&gt;
This post is to document the process followed, decisions taken and implementations done in implementing the REST service for WSO2 Identity Server&#39;s Entitlement Service. This was done as a GSoC project. If you are nto familiar with the WSO2 Identity Server, please first refer to my &lt;a href=&quot;http://manzzup.blogspot.com/2016/03/wso2-identity-server-understanding.html&quot; target=&quot;_blank&quot;&gt;previous post&lt;/a&gt;&amp;nbsp;which would answer most your questions.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;Abbreviations&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
IS &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- &amp;nbsp;Identity Server&lt;br /&gt;
XACML &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - &amp;nbsp;eXtensible Access Control Markup Language&lt;br /&gt;
REST &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- &amp;nbsp;Representational state transfer&lt;br /&gt;
JSON &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- &amp;nbsp;JavaScript Object Notation&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;Requirements of the service&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Allow RESTful access to 5 service methods (Already implemented in SOAP service)&lt;/li&gt;
&lt;li&gt;Allow XML XACML requests to be processed and responses to be given&lt;/li&gt;
&lt;li&gt;Allow XML web requests to be processed and responses to be given&lt;/li&gt;
&lt;li&gt;Allow JSON XACML requests to be processed and responses to be given&lt;/li&gt;
&lt;li&gt;Allow JSON web requests to be processed and responses to be given&lt;/li&gt;
&lt;li&gt;Exceptions should be handled globally and necessary responses should be given in a centralized manner&lt;/li&gt;
&lt;li&gt;Comply fully with the REST profile for XACML 3.0&lt;/li&gt;
&lt;li&gt;Provide swagger definitions for extra methods that are not specified in the REST profile&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;Implementation Decisions&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;b&gt;REST Framework - Apache CXF&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Apache CXF is a framework that allows easy deploying of REST Services. The key reasons for using Apache CXF for this implementation are&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot; type=&quot;i&quot;&gt;
&lt;li&gt;Apache CXF already used with other REST Services (ex: SCIM inbound provisioning service). So libraries are already bundled with IS&lt;/li&gt;
&lt;li&gt;JAXB provides inherent support for marshaling and unmarshaling Java Beans to and from XML&lt;/li&gt;
&lt;li&gt;Additional libraries can be used to easily support JSON&lt;/li&gt;
&lt;li&gt;Exception mappers allow centralized exception handling&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ol start=&quot;2&quot; style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;b&gt;Jackson for JSON support&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Jackson is a JAX-RS provider for JSON, and it&#39;s already used within IS.&lt;br /&gt;
&lt;br /&gt;
&lt;ol start=&quot;3&quot; style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;b&gt;Implementing JSON profile for XACML 3.0 defined &lt;a href=&quot;http://docs.oasis-open.org/xacml/xacml-json-http/v1.0/xacml-json-http-v1.0.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;ol start=&quot;4&quot; style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;b&gt;Using exception mapper to centralize the exception handling of the service and providing customized error messages from the service.&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;Final Implementation Design&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcfFov5ttB4DJ-qlf2grK_uh6CiBVcy9xvjV_eh1riDDS0aYnhQyRay8csC7OROz54tGNf_ayqymT0oMKW0BtvZUDVlLUFhRmYkBaE4axtM5t3QXv8E32rzTN8ri1ApygVcawz_CTg4-Xa/s1600/gsocd2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;218&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcfFov5ttB4DJ-qlf2grK_uh6CiBVcy9xvjV_eh1riDDS0aYnhQyRay8csC7OROz54tGNf_ayqymT0oMKW0BtvZUDVlLUFhRmYkBaE4axtM5t3QXv8E32rzTN8ri1ApygVcawz_CTg4-Xa/s640/gsocd2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;Rough Class Diagram on critical components&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHa-9MfYVGDKjGhwzxKWi5Mxmnz6gUxJlmmDSgvtNf1qy5y09nfM8_5uCQUV89PNSqWA1LB25fyLGWv3thD3oXYpFZIfUF5ijf9aQF2DJKtj22Z6n2DsR796Ha7I9VSqWh49rxf6y61zOl/s1600/gsocd1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHa-9MfYVGDKjGhwzxKWi5Mxmnz6gUxJlmmDSgvtNf1qy5y09nfM8_5uCQUV89PNSqWA1LB25fyLGWv3thD3oXYpFZIfUF5ijf9aQF2DJKtj22Z6n2DsR796Ha7I9VSqWh49rxf6y61zOl/s640/gsocd1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Figure 2&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;Steps&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1) Branching from SCIM inbound provisioning service implementation&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Since the the above project is already implemented and functioning within IS, a copy of that was used as a starting point for the REST implementation of Entitlement Service. The following classes and packages were derived as it is from the SCIM implementation&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;packages&lt;/u&gt;&lt;br /&gt;
i) &lt;i&gt;auth&lt;/i&gt;&lt;br /&gt;
ii) &lt;i&gt;impl&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;classes&lt;/u&gt;&lt;br /&gt;
i) &lt;i&gt;AuthenticationFilter&lt;/i&gt;&lt;br /&gt;
ii) &lt;i&gt;AbstractResource&lt;/i&gt;&lt;br /&gt;
iii) &lt;i&gt;ClearThreadLocalInterpretor&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2) Removing SCIM related dependencies&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
All SCIM related dependencies were removed from the project. Since Authentication is not centralized within IS (and will be in future), the following authenticators were hardcoded.&lt;br /&gt;
&lt;br /&gt;
i) &lt;i&gt;BasicAuth&lt;/i&gt;&lt;br /&gt;
ii) &lt;i&gt;OAuth&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3) Restructure project paths and doing necessary changes to &lt;i&gt;cxf-servlet.xml&lt;/i&gt; and &lt;i&gt;web.xml&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4) Adding JSON marshaling and unmarshaling to and from Java Bean support using Jackon&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Currently Jackson 2.5.4 is added as an external library to the project. And the Jackson Json Provider was registered as a provider for the service. For which the following lines we added in cxf-servlet.xml&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/f3wbpi4Y&quot;&gt;&lt;/script&gt;

&lt;b&gt;5) Define a new DecisionResource class which would handle the service endpoint requests&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;DecisionResource&lt;/i&gt; will extend &lt;i&gt;AbstractResource&lt;/i&gt;. Accordingly the necessary service methods were then added (Refer Figure 2).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;6) For methods &lt;i&gt;getDecision&lt;/i&gt; and &lt;i&gt;getDecisionByAttributes&lt;/i&gt; Request/Response converters were needed&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
By default Balana engine does not posses the capabilities to evaluate JSON XACML requests nor provide JSON XACML response. Hence 2 new classes were added to provide support.&lt;br /&gt;
&lt;br /&gt;
i) &lt;i&gt;JSONRequestParser&lt;/i&gt; : Converts JSON XACML request to Balana &lt;i&gt;ResponseCtx&lt;/i&gt; object&lt;br /&gt;
ii) &lt;i&gt;JSONResponseWriter&lt;/i&gt; : Converts Balanda &lt;i&gt;ResponseCtx&lt;/i&gt; object to JSON XACML Response&lt;br /&gt;
&lt;br /&gt;
7) For the rest of the web service requests, necessary Request/Reponse models were defined. Such defined models were&lt;br /&gt;
&lt;br /&gt;
i) &lt;i&gt;&lt;b&gt;getHome&lt;/b&gt; &lt;/i&gt;:&lt;i&gt; HomeResponseModel&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
ii) &lt;i&gt;&lt;b&gt;getDecisionByAttributtes&lt;/b&gt;&lt;/i&gt; / &lt;i&gt;&lt;b&gt;getBooleanDecision&lt;/b&gt;&lt;/i&gt;: &lt;i&gt;DecisionRequestModel&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
iii)&amp;nbsp;&lt;i&gt;&lt;b&gt;getEntitledAttributes&lt;/b&gt;&lt;/i&gt; :&lt;i&gt;EntitledAttributesRequestModel&lt;/i&gt;, &lt;i&gt;EntitledAttributesResponseModel&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
iv) &lt;b&gt;&lt;i&gt;getAllEntitlements&lt;/i&gt;&lt;/b&gt; : &lt;i&gt;AllEntitlementRequestModel&lt;/i&gt;, &lt;i&gt;AllEntitlementResponseModel&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;8) These models allow better Request/Response structures from the service&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;9) Custom Exception Mapper (&lt;i&gt;EntitlementExceptionMapper&lt;/i&gt;) was added&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This act as an intermediate to all exceptions occurred during the service method executions as well as JAX binding executions. Exception will not be handled inside the service methods, but rather will be thrown out to be caught be the exception mapper. Hence through which the exception handling procedure can be centralized. Custom error codes and messages were introduced. (Will be stated in a latter section)&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;10) Finally, the webapp is created to a war file and deployed to the IS webapps directory&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It can be accessible by https://localhost:9443/wso2-entitlement/entitlement/Decision?_wadl&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;11) Implementing Swagger for populating service methods&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Swagger is a framework that easily provide a globally understandable representation to the RESTful APIs. Since our REST service contained methods that were not defined by the XACML REST profile, swagger need to be used to populate the methods definitions of those additional methods and of the overall API itself. Swagger product a json/yaml file that nicely describes the service methods, input parameters and return values to any client that consumes it.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;12) Writing integration tests for the service using testNg and Jetty&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Once all done, the integration tests were written. Used jetty module that comes with Apache CXF to fire up a web client and send and retrieve responses from the service. The full procedure is at&amp;nbsp;&lt;a href=&quot;http://manzzup.blogspot.com/2016/08/writing-integration-tests-for-apache.html&quot;&gt;http://manzzup.blogspot.com/2016/08/writing-integration-tests-for-apache.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;Code&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The complete code can be found at&lt;br /&gt;
&lt;a href=&quot;https://github.com/ManZzup/identity-framework/tree/master/components/entitlement/org.wso2.carbon.identity.entitlement.endpoint&quot;&gt;https://github.com/ManZzup/identity-framework/tree/master/components/entitlement/org.wso2.carbon.identity.entitlement.endpoint&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Github Commits&lt;br /&gt;
&lt;a href=&quot;https://github.com/ManZzup/identity-framework/commits/master?author=manzzup&quot;&gt;https://github.com/ManZzup/identity-framework/commits/master?author=manzzup&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Public JIRA Ticket&lt;br /&gt;
&lt;a href=&quot;https://wso2.org/jira/browse/IDENTITY-4985&quot;&gt;https://wso2.org/jira/browse/IDENTITY-4985&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;u&gt;References&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif; text-align: left;&quot;&gt;
1) &lt;a href=&quot;http://docs.oasis-open.org/xacml/xacml-rest/v1.0/csprd03/xacml-rest-v1.0-csprd03.html&quot; target=&quot;_blank&quot;&gt;XACML 3.0 REST Profile&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: white; color: #222222; font-family: arial, sans-serif;&quot;&gt;
2) &lt;a href=&quot;http://docs.oasis-open.org/xacml/xacml-json-http/v1.0/xacml-json-http-v1.0.html&quot; target=&quot;_blank&quot;&gt;XACML 3.0 JSON Profile&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/7817940199298763704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2016/08/gsoc-2016-rest-implementation-for-wso2.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/7817940199298763704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/7817940199298763704'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2016/08/gsoc-2016-rest-implementation-for-wso2.html' title='[GSoC 2016] REST implementation for WSO2 IS Entitlement Service'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcfFov5ttB4DJ-qlf2grK_uh6CiBVcy9xvjV_eh1riDDS0aYnhQyRay8csC7OROz54tGNf_ayqymT0oMKW0BtvZUDVlLUFhRmYkBaE4axtM5t3QXv8E32rzTN8ri1ApygVcawz_CTg4-Xa/s72-c/gsocd2.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-3594076537468953591</id><published>2016-07-14T16:15:00.001-07:00</published><updated>2017-01-03T19:13:45.291-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fix"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><title type='text'>phpmyadmin not found on LAMP install in Ubuntu 16.04+</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey folks,&lt;br /&gt;
&lt;br /&gt;
Just another quick one. Recently I installed Ubuntu 16.04 and Ubuntu 16.10 both uses the shinny new php7.0. And some newer version of apache as well. And both times when I installed phpmyadmin, and go to &lt;b&gt;http://127.0.0.1/phpmyadmin&lt;/b&gt; or &lt;b&gt;http://127.0.0.1/phpmyadmin&lt;/b&gt;&lt;br /&gt;
it gives me a simple, annoying 404!&lt;br /&gt;
&lt;br /&gt;
Well there&#39;s a lot of solutions for this in Q&amp;amp;A threads, but for me the only working solution is that, you need to Include the phpmyadmin configuration at the end of the apache2 configuration, so that apache knows that phpmyadmin exists. Here&#39;s how&lt;br /&gt;
&lt;br /&gt;
1) Open up apache configurations&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;sudo nano /etc/apache2/apache2.conf&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
2) Add the following to the very end&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;￼Include /etc/phpmyadmin/apache.conf&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
3) Save and exist and then restart the apache server&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;sudo service apache2 restart&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
4) Browse &lt;a href=&quot;http://127.0.0.1/phpmyadmin&quot;&gt;http://127.0.0.1/phpmyadmin&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
WORKS GREAT!!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/3594076537468953591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2016/07/phpmyadmin-not-found-on-lamp-install-in.html#comment-form' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/3594076537468953591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/3594076537468953591'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2016/07/phpmyadmin-not-found-on-lamp-install-in.html' title='phpmyadmin not found on LAMP install in Ubuntu 16.04+'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-5949581077915827677</id><published>2016-05-21T09:33:00.001-07:00</published><updated>2016-07-14T21:47:21.244-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fix"/><category scheme="http://www.blogger.com/atom/ns#" term="GSOC"/><category scheme="http://www.blogger.com/atom/ns#" term="WSO2"/><title type='text'>Tomcat error when deploying web app : addFilter, addServlet NoSuchMethodException</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey peeps,&lt;br /&gt;
&lt;br /&gt;
Just a quick update on something i found today. I was hacking things with a tomcat server (wso2 IS). My need was to duplicate a webapp and make some changes as I like. But when I changed those &#39;stuff&#39; in the webapp source I had to specifically mention some dependency versions (build tool was maven) rather than obtaining them from the parent pom.&lt;br /&gt;
&lt;br /&gt;
And when I generated the war and deployed it in the server I got the following error&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/78f2tL5P&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Solution&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;
It turns out that the reason for this error has nothing to do with the actual content of the web.xml&lt;br /&gt;
But a dependency mismatch&lt;br /&gt;
That is some libraries in your WEB-INF\lib directory of the war file is conflicting with some libraries already loaded. So the fix was for me to delete the lib directory completely and deploy which worked!&lt;br /&gt;
&lt;br /&gt;
But according to some &lt;a href=&quot;http://stackoverflow.com/questions/13539380/java-lang-nosuchmethodexception-org-apache-catalina-deploy-webxml-addfilter&quot; target=&quot;_blank&quot;&gt;stackoverflow answers&lt;/a&gt;, deleting just &lt;b&gt;tomcat-catalina.jar&lt;/b&gt; and/or all &lt;b&gt;tomcat-*.jars&lt;/b&gt; will fix it&lt;br /&gt;
&lt;br /&gt;
Happy Deploying! :D&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/5949581077915827677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2016/05/tomcat-error-when-deploying-web-app.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5949581077915827677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5949581077915827677'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2016/05/tomcat-error-when-deploying-web-app.html' title='Tomcat error when deploying web app : addFilter, addServlet NoSuchMethodException'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-3110653378186417334</id><published>2016-04-11T04:02:00.003-07:00</published><updated>2017-01-03T19:13:54.577-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Laravel"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><title type='text'>Laravel 5 : Getting started for collaborative development</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey folks,&lt;br /&gt;
&lt;br /&gt;
Laravel, for those who aren&#39;t familiar is a php framework that is widely gaining popularity these days. This came into my attention when I had to implement an HR system in PHP. Usually I would have gone with Symfony, which I know has a larger support base. But the issue is that Symfony has a huge learning curve and I have to work with a team. Laravel on the hand has a less difficult learning procedure and it can be used to start implementation rapidly.&lt;br /&gt;
&lt;br /&gt;
But Laravel it self is really confusing sometimes. Mostly if you are not familiar to tools like composer and git (for collaborative development). So here&#39;s a quick tutorial in which I mention steps I took to setup Laravel and a git repo for development.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Requirements&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
1) &lt;u&gt;Git installed&amp;nbsp;&lt;/u&gt;&lt;br /&gt;
You can download git for any platform here,&lt;br /&gt;
&lt;a href=&quot;https://git-scm.com/downloads&quot;&gt;https://git-scm.com/downloads&lt;/a&gt;&lt;br /&gt;
Make sure if in windows, that you add Git to shell commands when they ask to, so that you can access git from command prompt at any place.&lt;br /&gt;
&lt;br /&gt;
2) &lt;u&gt;LAMP / WAMP installed&lt;/u&gt;&lt;br /&gt;
Linux Apache MySQL PHP (LAMP)&lt;br /&gt;
Windows Apache MySQL PHP (WAMP)&lt;br /&gt;
You can do this per your liking&lt;br /&gt;
&lt;br /&gt;
3) &lt;u&gt;phpMyAdmin installed&lt;/u&gt;&lt;br /&gt;
If you are a windows user using popular WAMP like XAMPP, you will have phpMyAdmin already installed. LAMP users need to add it manually.&lt;br /&gt;
&lt;br /&gt;
4) &lt;u&gt;Composer installed&lt;/u&gt;&lt;br /&gt;
Composer is a dependency management tool for Laravel. Much like Maven &amp;nbsp;(if you are familiar) it will take a list of necessary dependencies and download these to the computer which removes the need of uploading all the 3rd party libraries everywhere.&lt;br /&gt;
Download and install composer according to the instructions given here&lt;br /&gt;
&lt;a href=&quot;https://getcomposer.org/download/&quot;&gt;https://getcomposer.org/download/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Oookay now we are officially ready to start off with the things.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;Steps&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1) Make an online repository to host your source code&lt;/b&gt;&lt;br /&gt;
For collaborative development, first thing you need it to host your code somewhere. Since we are using git for source control, we need a host that supports git.&lt;br /&gt;
&lt;a href=&quot;https://github.com/&quot; target=&quot;_blank&quot;&gt;Github &lt;/a&gt;: will let you have public repos for free&lt;br /&gt;
&lt;a href=&quot;https://bitbucket.org/&quot; target=&quot;_blank&quot;&gt;Bitbucket &lt;/a&gt;: will let you have private repos for free (plus team integration with limits)&lt;br /&gt;
&lt;br /&gt;
I went with bitbucket since our code is SUPER SECRET!&lt;br /&gt;
So goto &lt;a href=&quot;http://bitbucket.org/&quot;&gt;bitbucket.org&lt;/a&gt;, make a new repo. let&#39;s say &quot;AwesomeHR&quot; &lt;br /&gt;
Now ask all your team members to sign up with bitbucket as well and in your repo settings, add all of the team members and give them write / read access.&lt;br /&gt;
&lt;br /&gt;
2) Clone your repo to the local drive&lt;br /&gt;
It&#39;s time to get your repo to your hard drive. Goto your webroot directory (usually www, htdocs, etc depends according to your server) and clone the repo using this command,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;git clone&amp;nbsp;https://manzzup@bitbucket.org/manzzup/awesomehr.git&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3) Installing Laravel&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
There are 2 ways of installing Laravel,&lt;br /&gt;
One is the official guide in their installation page using composer and laravel installer&lt;br /&gt;
&lt;a href=&quot;https://laravel.com/docs/5.2&quot;&gt;https://laravel.com/docs/5.2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Second one is the hard code way in which we download the Laravel master branch from their github repository and extract it where we want. I had more success with this method in several platforms than using the installer (which has varying steps depending on the platform)&lt;br /&gt;
&lt;br /&gt;
i. First download the Laravel master repo as a zip file from their &lt;a href=&quot;https://github.com/laravel/laravel&quot; target=&quot;_blank&quot;&gt;Github repo&lt;/a&gt;&lt;br /&gt;
You can also use the following link for a direct download&lt;br /&gt;
&lt;a href=&quot;https://github.com/laravel/laravel/archive/master.zip&quot;&gt;https://github.com/laravel/laravel/archive/master.zip&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
ii. Next extract it to your newly cloned directory so that when you go into your AwesomeHR folder, it shown all the php files (not laravel-master folder, in that case move everything inside laravel-master to outside)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NOTE:&lt;/b&gt;&lt;br /&gt;
Now comes a very critical understanding. Laravel has 1000 different 3rd party libraries in use. Those libraries as well as the Laravel core source are NOT included in the zip file you just downloaded. why?&lt;br /&gt;
&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Because doing such would make it a very big file&lt;/li&gt;
&lt;li&gt;We can&#39;t always have the latest version of the library if you pre bundle it with the Laravel source, any bug fixes won&#39;t reach once downloaded.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
So here&#39;s how composer come into play. Composer&#39;s job is to download all those other libraries into the directory named &quot;vendor&quot; in your Laravel installation and setup them so that it works smoothly.&lt;br /&gt;
But keep in mind that you SHOULD NOT copy this vendor directory when you are sharing your code. In other words, the vendor directory be default has a .gitignore file which prevents ANY file inside that folder being uploaded to your remote repo.&lt;br /&gt;
Any collaborator using your code has to follow the steps of cloning your repo and then using composer to download the additional libraries.&lt;br /&gt;
&lt;br /&gt;
iv. After that loong discussion, you use the following command while being inside of the extracted folder (AwesomeHR)&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;composer install&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
It will take some time for this to complete. Be patient my friend.&lt;br /&gt;
&lt;br /&gt;
To check if all went good, goto&amp;nbsp;http://localhost/AwesomeHR/public/ and you see this&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjczQNH4aKL0w4OaVvdx8kgSLb0g-sQLOwLaFYKkjpjELtTCDdXbcB9lp4VQPVmqtc4et5puqwpUSnxwExZResWgQ8x1sFizuABa8xSXAtIiPDV-7A7Fn_CJIR8wmJ9Tbu4b6hpgsfl2yLs/s1600/laraveldone.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;328&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjczQNH4aKL0w4OaVvdx8kgSLb0g-sQLOwLaFYKkjpjELtTCDdXbcB9lp4VQPVmqtc4et5puqwpUSnxwExZResWgQ8x1sFizuABa8xSXAtIiPDV-7A7Fn_CJIR8wmJ9Tbu4b6hpgsfl2yLs/s640/laraveldone.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Ta-Daaa you have a fresh Laravel installation now!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Configuring Laravel&lt;br /&gt;
Still the shit ain&#39;t working. Obviously you need to follow an installation procedure.&lt;br /&gt;
You need a database for Laravel to store all the data to start with.&lt;br /&gt;
Goto phpMyAdmin and make a new database called &quot;laravel&quot;&lt;br /&gt;
I will assume our database configuration is as follows&lt;br /&gt;
&lt;br /&gt;
Database name : laravel&lt;br /&gt;
Database user : root&lt;br /&gt;
Database pass : root&lt;br /&gt;
Database host : 127.0.0.1&lt;br /&gt;
&lt;br /&gt;
To make Laravel use these settings, open the .env.example file in your laravel root directory using your IDE or something like SublimeText. (Notepad won&#39;t work)&lt;br /&gt;
Edit the lines 5 - 8 to match your configuration&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;DB_HOST=127.0.0.1&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;DB_DATABASE=laravel&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;DB_USERNAME=root&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;DB_PASSWORD=root&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Officially, you can start development with Laravel. You can try a few simple migration codes and make sure the installation is okay. Before you forget, you need to upload the code to the remote repo in bitbucket. Use the following command,&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;git add .&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;git commit -m &quot;initial commit&quot;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;git push origin master&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
5) Collaborative development&lt;br /&gt;
To use the above code in a team mate&#39;s disk, follow these steps&lt;br /&gt;
&lt;br /&gt;
i) Clone the bitbucket repo&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;git clone&amp;nbsp;https://manzzup@bitbucket.org/manzzup/awesomehr.git&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
ii) Use composer to install the vendor files&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;composer install&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
iii) Do configurations as in step 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Happy Laravel-ing folks!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/3110653378186417334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2016/04/laravel-5-getting-started-for.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/3110653378186417334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/3110653378186417334'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2016/04/laravel-5-getting-started-for.html' title='Laravel 5 : Getting started for collaborative development'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjczQNH4aKL0w4OaVvdx8kgSLb0g-sQLOwLaFYKkjpjELtTCDdXbcB9lp4VQPVmqtc4et5puqwpUSnxwExZResWgQ8x1sFizuABa8xSXAtIiPDV-7A7Fn_CJIR8wmJ9Tbu4b6hpgsfl2yLs/s72-c/laraveldone.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-7925151370473299464</id><published>2016-03-25T07:25:00.001-07:00</published><updated>2017-01-03T19:17:32.285-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Identity Server"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="REST"/><category scheme="http://www.blogger.com/atom/ns#" term="SOAP"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><category scheme="http://www.blogger.com/atom/ns#" term="WSO2"/><category scheme="http://www.blogger.com/atom/ns#" term="XACML"/><title type='text'>WSO2 Identity Server : Understanding XACML 3.0 policies, implementing them in IS and testing with SoapUI</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hi folks,&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This is a weird way to resume a blog that was silent for a long time. But I guess this will do. The reason for this post is mainly GSoC 16&#39; which is currently happening. And in selecting a project for it, I came up with WSO2 which has middleware based products. And with time constraints, I was forced to study a system overnight and thought that documenting what I found would be beneficial for those who try to do the same later.&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;So the question here is what exactly WSO2 Identity Server does?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://blog.atena.pl/wp-content/uploads/2014/04/040814_0810_ProduktyWSO19.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://blog.atena.pl/wp-content/uploads/2014/04/040814_0810_ProduktyWSO19.png&quot; /&gt;&lt;/a&gt;WSO2 Identity Server (IS) is an identity management system based on open standards. It&#39;s a middleware that would connect all dispersed authentication services you have into one manageable system. It has many features that makes authentication and authorization of users for your resources a simple and efficient task. Since the scope of this post is not explaining what IS is, I recommend you to follow the following links to have a better idea. (Dear future GSoC applicant, it is very important that you go through those seemingly boring but highly important links :) )&lt;/div&gt;
&lt;br /&gt;
Get to know the high level artichecture&lt;br /&gt;
&lt;a href=&quot;https://docs.wso2.com/display/IS500/Architecture&quot;&gt;https://docs.wso2.com/display/IS500/Architecture&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
A very simple getting started guide&lt;br /&gt;
&lt;a href=&quot;http://umeshagunasinghe.blogspot.com/2015/11/wso2-identity-server-quick-tutorial-on.html&quot;&gt;http://umeshagunasinghe.blogspot.com/2015/11/wso2-identity-server-quick-tutorial-on.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The blog that would contains answers to many questions on IS&lt;br /&gt;
&lt;a href=&quot;http://pushpalankajaya.blogspot.com/&quot;&gt;http://pushpalankajaya.blogspot.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now since you have some idea about IS, let&#39;s dig into XACML specification, its uses and how IS has implemented it.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
XACML is set of standards by OASIS that are related to access control. In general, it specify a way or a language through which applications should communicate to request authentication and authorization data from eachother. Since the specification in discuss is XACML 3.0, from the following link you can observe how a XACML document would look like.&lt;/div&gt;
&lt;a href=&quot;http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html&quot;&gt;http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
So why XACML is important to Identity Server is:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;It is used as the request/response language standard&lt;/li&gt;
&lt;li&gt;It is used as the access control policy standard&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;With that we get the question what exactly is a policy? and how is it all related?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Okay, let&#39;s take some theory in.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A policy (in this context) is a set of rules that would define to IS who can access what. Basically its like a paper from a rule book, Whenever someone asks if a user &quot;A&quot; can perform action &quot;WRITE&quot; to the resource &quot;R&quot;, it will go through those policy pages and see if there&#39;s any policy defining those requirements.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Let&#39;s see the above explanation in a more technical way.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Assume there&#39;s a resource link. Whoever accessing the resource now would meet a blocker before the actual resource end point. This blocker is known as the Policy Enforcement Point (PEP). The PEP is like the guardian of the front gate that would catch the request and it wants to know if the requests comes from a client that actually has access to the resource. For that it sends the request data to a place called Policy Decision Point (PDP). PDP is like the rule book reader that matches requests data against any rules in the rule book. The rule book is known as the Policy Administration Point (PAP), it is where all the policies are written.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Additionally there&#39;s a component known as Policy Information Point (PIP). This is a place where the PDP can ask for more information of a user that&#39;s requesting the authorization.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now the three parts PIP, PDP, PAP are working together to figure out if the request can pass through the blocker (PEP) and reach the resource. It can do so only if they given the &#39;Permit&#39; flag back as response to the PEP. If you look at the following diagram things may get more clear.&lt;/div&gt;
&lt;br /&gt;
[Well just looking won&#39;t help, you have to really try to understand]&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh75EwpVpe__Gpg6c68W5WWvPEgzCFxScjtz1ouAOKvs2MQjUOJrw6g0R4KkI06TnB0EAPSUJBhqK1oQxO2nRrwgSxueIJFr8haTsQaPgxk34yxB01SEzkT5OMp48cy8-iziBcYHoAcsikZ/s1600/IS2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;491&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh75EwpVpe__Gpg6c68W5WWvPEgzCFxScjtz1ouAOKvs2MQjUOJrw6g0R4KkI06TnB0EAPSUJBhqK1oQxO2nRrwgSxueIJFr8haTsQaPgxk34yxB01SEzkT5OMp48cy8-iziBcYHoAcsikZ/s640/IS2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;XACML architecture implementation in IS&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDY5Klmho8dvWzBOVk8HoZ_6bbz87nXs47tffNcgF-NOFSmd-GH0IRzOmIah6DnLkIBKslYdGdlsC3IIWmRM1hhOCScWjRPsdsOf_z0tRgSULpATxbi-gDbxxq5CETyNyKoFolgAElCGfX/s1600/PDP+%25281%2529.png&quot; imageanchor=&quot;1&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDY5Klmho8dvWzBOVk8HoZ_6bbz87nXs47tffNcgF-NOFSmd-GH0IRzOmIah6DnLkIBKslYdGdlsC3IIWmRM1hhOCScWjRPsdsOf_z0tRgSULpATxbi-gDbxxq5CETyNyKoFolgAElCGfX/s640/PDP+%25281%2529.png&quot; width=&quot;422&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I think that actually clears-up the theory part. So we can now get into real action :D&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Scenario&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Suppose there&#39;s a resource located at http://127.0.0.1/service/very_secure&lt;br /&gt;
And this service should only be accessed by admins (Or any user that is given the user role as &#39;admin&#39;)&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Objectives&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
1) Configure IS to have a policy to support the above rule&lt;br /&gt;
2) Validate the policy using the IS inbuilt Try-it feature&lt;br /&gt;
3) Use SoapUI to simulate a PEP that is sending a SOAP request to check if a potential user is can access the given resource&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Pre-Requities&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
1) WSO2 Identity Server downloaded / build from source&lt;br /&gt;
2) SoapUI (free version would do)&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Steps&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;
&lt;b&gt;1) Adding a policy to IS&lt;/b&gt;&lt;br /&gt;
Download and Start the Identity Server (Please read above links again if you have idea how to do that)&lt;br /&gt;
Login as username ; admin, password: admin&lt;br /&gt;
Goto Policy Administration -&amp;gt; Add New Entitlement&lt;br /&gt;
Note that entitlement is adding a new policy or a rule to the rulebook&lt;br /&gt;
Select &lt;b&gt;Write Policy in XML&lt;/b&gt; from the list&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2) Writing the policy&lt;/b&gt;&lt;br /&gt;
Now that there&#39;s a windows where we can write our policy in XACML format. We can also use their inbuilt editors, but for the scope of this we&#39;ll stick to the text editor.&lt;br /&gt;
Use the following policy code. paste it there and click &lt;b&gt;Save Policy&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/9s7kT8zR&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;br /&gt;
A above policy defines a set of rules,&lt;br /&gt;
i) The policy has the id &#39;auth_admin&#39;&lt;br /&gt;
ii) It matches the attribute resource to http://127.0.0.1/service/very_secure/&lt;br /&gt;
iii) It matches the action to exactly be &#39;read&#39;&lt;br /&gt;
iv) It matches the group of the user accessing to exactly be &#39;admin&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3) Testing the policy&lt;/b&gt;&lt;br /&gt;
Once you add the policy and save you will see it in the Policy Administration list. From the list there select&amp;nbsp;&lt;b&gt;Try&lt;/b&gt;&lt;br /&gt;
A new UI would open and select &#39;Create Request using Editor&#39;&lt;br /&gt;
What we going to do here is to create a sample request that might be coming from an actual PEP and test it against our PDP to see if it&#39;s working.&lt;br /&gt;
Use the folloing xml code, which is a XACML request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/LDpy4W3f&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;br /&gt;
Now click &lt;b&gt;Test Evaluate&lt;/b&gt;&amp;nbsp;and you would see that the XACML response appear with the decision tag saying &#39;permit&#39;. ta-daa! We have successfully made a working XACML policy in IS. Now try changing things in the request, like group name, and resource location and observe the response.&lt;br /&gt;
&lt;br /&gt;
Finally we have to actually put the policy to working mode. This is done by publishing it.&lt;br /&gt;
Go back to Policy Administration and publish auth_admin&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;4) Simulating the PEP using SoapUI&lt;/b&gt;&lt;br /&gt;
Although we evaluated the Policy using the internet tools, we need to verify that it works from outside too. On the other hand, it is important to observe the response from IS to a PEP using SOAP.&lt;br /&gt;
We first need to prepare the IS to show the WSDL definition for SoapUI to extract all endpoints.&lt;br /&gt;
&lt;br /&gt;
Open &amp;lt;product-home&amp;gt;/repository/conf/carbon.xml&lt;br /&gt;
Change&lt;br /&gt;
&lt;i&gt;&amp;lt;HideAdminServiceWSDLs&amp;gt;true&amp;lt;/HideAdminServiceWSDLs&amp;gt;&lt;/i&gt;&lt;br /&gt;
to&lt;br /&gt;
&lt;i&gt;&amp;lt;HideAdminServiceWSDLs&amp;gt;false&amp;lt;/HideAdminServiceWSDLs&amp;gt;&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
Restart IS and navigate to, &lt;u&gt;https://localhost:9443/services/EntitlementService?wsdl&lt;/u&gt;&lt;br /&gt;
You can see all the endpoints&lt;br /&gt;
&lt;br /&gt;
Open SoapUI and add new project, then add wsdl and put the above url. Once entered you would see that SoapUI automatically identify the endpoints and the service names.&lt;br /&gt;
Goto getDecision and right click -&amp;amp;gt; add request&lt;br /&gt;
Use the following XMLto have a request&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;//pastebin.com/embed_js/fwa4uXMt&quot;&gt;&lt;/script&gt;

NOTE:&lt;br /&gt;
Now we have to put a XACML request INSIDE the SOAP request. In order for the 2 xmls not to fight with each other, we put the XACML request inside CDATA tag, which would prevent it from considering as XML, but it would still be a part of the request text.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Before sending the request we need to add authentication of course.&lt;br /&gt;
So add auth from SoapUI and of course put username:password as admin:admin&lt;br /&gt;
And hit SEND button. [That green triangular button]&lt;br /&gt;
&lt;br /&gt;
And you would see a SOAP response, in which a CDATA section has the actual XACML response saying &#39;permit&#39;&lt;br /&gt;
DONE!&lt;br /&gt;
&lt;br /&gt;
So this has been a very long post, and i hope to upload and fix issues here and there in this. But hope this helps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;References&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
http://pushpalankajaya.blogspot.com/2013/06/working-with-xacml-30-policies-for-fine.html&lt;br /&gt;
http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html&lt;br /&gt;
https://docs.wso2.com/display/IS500/Architecture&lt;br /&gt;
&lt;br /&gt;
&lt;product-home .=&quot;&quot; and=&quot;&quot; cabon.xml=&quot;&quot; change=&quot;&quot; conf=&quot;&quot; p=&quot;&quot; repository=&quot;&quot;&gt;
&lt;br /&gt;
&lt;/product-home&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/7925151370473299464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2016/03/wso2-identity-server-understanding.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/7925151370473299464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/7925151370473299464'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2016/03/wso2-identity-server-understanding.html' title='WSO2 Identity Server : Understanding XACML 3.0 policies, implementing them in IS and testing with SoapUI'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh75EwpVpe__Gpg6c68W5WWvPEgzCFxScjtz1ouAOKvs2MQjUOJrw6g0R4KkI06TnB0EAPSUJBhqK1oQxO2nRrwgSxueIJFr8haTsQaPgxk34yxB01SEzkT5OMp48cy8-iziBcYHoAcsikZ/s72-c/IS2.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-5374755020709799216</id><published>2015-08-01T03:07:00.001-07:00</published><updated>2017-01-03T19:20:46.940-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="algorithms"/><category scheme="http://www.blogger.com/atom/ns#" term="data structures"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><title type='text'>Explained: Finding the Longest Increasing Subsequence using Segment Tree</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey guys,&lt;br /&gt;
&lt;br /&gt;
Well this is just random but i found out that for my most disappointment that the tutorials on the above topic arent really useful for the novice. Most tutorials just give the procedure in english or the code but not both. Hence I&#39;m trying to write something human-understandable in the simplest english i know :D&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;Problem&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Find the length of the longest increasing subsequence in a given array of integers&lt;br /&gt;
For the context of the tutorial we assume all integers are positive hence 0 will be our minimum.&lt;br /&gt;
Read more about in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Longest_increasing_subsequence&quot; target=&quot;_blank&quot;&gt;wikipedia article&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
So the most obvious method is the complete search of the array which would take O(n^2) time. This is highly inefficient for a data set of very large n. Thus an alternative method should be used. Using the segment tree we can find the answer in just O(nlogn) time which is acceptable.&lt;br /&gt;
&lt;br /&gt;
For those who aren&#39;t familiar with Segment Trees please refer to wikipedia or this &lt;a href=&quot;https://www.youtube.com/watch?v=ZBHKZF5w4YU&quot; target=&quot;_blank&quot;&gt;Youtube tutorial&lt;/a&gt;. I actually found the Youtube tutorial quite informative and simple to understand.&lt;br /&gt;
&lt;br /&gt;
So back to the solution, what we gonna do is to build segment tree and find the length of the longest subsequence. Please note that this won&#39;t give you the actual sequence but just the length of it. But you can implement the finding sequence part easily.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;Procedure&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
1. Sort the original array but keep the original index of each element.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&lt;b&gt;original array&lt;/b&gt; &amp;nbsp;- the input array with the elements in their original order&lt;br /&gt;
&amp;nbsp;&lt;b&gt;sorted array&lt;/b&gt; &amp;nbsp;- &amp;nbsp;an array of objects that contain information on the value of the element as well as its position in the original array. This array is sorted according to the value of the element.&lt;br /&gt;
&lt;br /&gt;
2. Initialize the segment tree with all 0&lt;br /&gt;
&lt;br /&gt;
2. We loop each element of the sorted array and in each iteration&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; i. Take the original index of the element&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; ii. Find the value corresponding to (0,index) from the segment tree. This would be 0 in initial iterations.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;iii. This value would be the length of longest subsequence upto that point, then add 1 to this value since obviously the current element has a value greater than all previous elements (since the array is sorted) and this extend the previous biggest sequence by 1.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;iv. Use this value to build the segment tree further. (update the tree)&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;Code&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Let&#39;s look at the code and then I&#39;ll do some drawing and stuff to explain the process VISUALLY *_*&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #ffffef; color: #181818; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , monospace , serif; font-size: 12px; line-height: 22px; white-space: pre;&quot;&gt;&lt;script src=&quot;http://pastebin.com/embed_js.php?i=c3uhcbb2&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
So it looks all okay till it comes to the loop. What eaxtly happend when the buildTree and findMax methods are called? How the tree is built?&lt;br /&gt;
&lt;br /&gt;
Let&#39;s take our array, sorted array and the initial segment tree&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4CSebXI0I6iMj3XK2oW3rLJ0JRnRA68nB5v2RFWXc1-vJazlvdDRwspyXFZPIb4QxAwL_2Txg3XB_ovvm8Bev-MylXu5sRu6QFc8ssjOuh2JRd6ZfR-11veLcWD0q2v5TuJCrGQZbRrfD/s1600/20150801_152744.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4CSebXI0I6iMj3XK2oW3rLJ0JRnRA68nB5v2RFWXc1-vJazlvdDRwspyXFZPIb4QxAwL_2Txg3XB_ovvm8Bev-MylXu5sRu6QFc8ssjOuh2JRd6ZfR-11veLcWD0q2v5TuJCrGQZbRrfD/s640/20150801_152744.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#39;s go through our loops&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj75VE6FIN4KcnX1A548shNo5J_KBy9DJeUxBJTgGYVelwWzh7otRmwlcRTPMDWqebFSKHjcJY-qgUGbwbp3-Hjxu1gujR6APrv6JzHicIfDezIkG555ATt3dNOg8DtlTcoxyvA9xdFylZg/s1600/20150801_152757.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj75VE6FIN4KcnX1A548shNo5J_KBy9DJeUxBJTgGYVelwWzh7otRmwlcRTPMDWqebFSKHjcJY-qgUGbwbp3-Hjxu1gujR6APrv6JzHicIfDezIkG555ATt3dNOg8DtlTcoxyvA9xdFylZg/s640/20150801_152757.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfNIWnWgY4ytefch1s3_de5Z5kmAzsQSguV41o1wl2lUtX7kh7qWTD3bLNLYxb96XL9McYhRO1u_lg9KJwL0-lV7eFE3-OPnY-ojQlzziWIEI19hIQmmQpxwNKTxwzCmOE4AWrS0S5YjS-/s1600/20150801_152840.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfNIWnWgY4ytefch1s3_de5Z5kmAzsQSguV41o1wl2lUtX7kh7qWTD3bLNLYxb96XL9McYhRO1u_lg9KJwL0-lV7eFE3-OPnY-ojQlzziWIEI19hIQmmQpxwNKTxwzCmOE4AWrS0S5YjS-/s640/20150801_152840.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY-JB1-QOUsWWoEz6qjEcTQaHT6lLVCwtJAnvrp8b43advFbfiG3IFmRvXcHes_8tMIE6LFuOTLXkPW5wLn0Kdq2ugh-LMX66hb9xw-jAuXyYpPQ-ukR2O-MfiZXYXaCrJmNCnQuF1a-hK/s1600/20150801_152853.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiY-JB1-QOUsWWoEz6qjEcTQaHT6lLVCwtJAnvrp8b43advFbfiG3IFmRvXcHes_8tMIE6LFuOTLXkPW5wLn0Kdq2ugh-LMX66hb9xw-jAuXyYpPQ-ukR2O-MfiZXYXaCrJmNCnQuF1a-hK/s640/20150801_152853.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkxr2_5Uxwggjr5t2adR-mY0ZWS-OEiZUbtYdM00Lxr5nUF-3quafAxOI6tZkCM_g0HJVpcv1tiDAjYMTtrb1VQaNpYIm59eCMEKpsoCUBLbZaqQWHneWa9xtA0xOF4Q0yXKD0-3UMbwjy/s1600/20150801_152900.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkxr2_5Uxwggjr5t2adR-mY0ZWS-OEiZUbtYdM00Lxr5nUF-3quafAxOI6tZkCM_g0HJVpcv1tiDAjYMTtrb1VQaNpYIm59eCMEKpsoCUBLbZaqQWHneWa9xtA0xOF4Q0yXKD0-3UMbwjy/s640/20150801_152900.jpg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
So finally the root of our tree gives the answer :D&lt;br /&gt;
&lt;br /&gt;
Cyah&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/5374755020709799216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2015/08/explained-finding-longest-increasing.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5374755020709799216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5374755020709799216'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2015/08/explained-finding-longest-increasing.html' title='Explained: Finding the Longest Increasing Subsequence using Segment Tree'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi4CSebXI0I6iMj3XK2oW3rLJ0JRnRA68nB5v2RFWXc1-vJazlvdDRwspyXFZPIb4QxAwL_2Txg3XB_ovvm8Bev-MylXu5sRu6QFc8ssjOuh2JRd6ZfR-11veLcWD0q2v5TuJCrGQZbRrfD/s72-c/20150801_152744.jpg" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-1094525095153079397</id><published>2015-07-01T00:45:00.001-07:00</published><updated>2017-01-03T19:17:57.198-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Haskell"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><title type='text'>Things I wish someone told me when doing Haskell </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey people,&lt;br /&gt;
&lt;br /&gt;
Long time not posts, yeah i know. Stuck with useless stuff. Finally got some time for a post. This would really be a bundle of snippets mainly for the beginner haskell coders that will soon be frustrated with all the functional elements. I&#39;ll try to keep this updated with every new frustration i get :D&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;IO&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Doing IO was the worst thing i had to go through in haskell. As you know that haskell wont allow usual IO in a function, you have to explicitly use &lt;i&gt;&lt;b&gt;do&lt;/b&gt;&lt;/i&gt; to use a IO command&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;StdIn as a String&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #ffffef; color: #181818; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , monospace , serif; font-size: 12px; line-height: 22px; white-space: pre;&quot;&gt;&lt;script src=&quot;http://pastebin.com/embed_js.php?i=B9L9eiMA&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;StdIn as an integer/double&lt;/b&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #ffffef; color: #181818; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , monospace , serif; font-size: 12px; line-height: 22px; white-space: pre;&quot;&gt;&lt;script src=&quot;http://pastebin.com/embed_js.php?i=B9L9eiMA&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Using a function inside a do block with IO&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;There are instance when our function has to perform IO function only in certain instances. Let&#39;s say I need to print numbers only under a certain condition. Then we will have a conditional statement in our function. But as we know every condition in haskell should be complete. If this else ?&lt;br /&gt;
For this simply use&lt;br /&gt;
&lt;i&gt;&lt;b&gt;return ()&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
Check this exmaple of printing the pascal triangle&lt;br /&gt;
&lt;span style=&quot;background-color: #ffffef; color: #181818; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , monospace , serif; font-size: 12px; line-height: 22px; white-space: pre;&quot;&gt;&lt;script src=&quot;http://pastebin.com/embed_js.php?i=ECiX3BvX&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: #ffffef; color: #181818; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , monospace , serif; font-size: 12px; line-height: 22px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;u&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;Functions&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Function defining has several forms and quite different according to what you wanna do.&lt;br /&gt;
For an example given here are two ways to define a function that would double the input amount if it&#39;s even or keeps the same if it&#39;s odd&lt;br /&gt;
&lt;br /&gt;
Note : if is combined with else, otherwise is not combined with it&lt;br /&gt;
&lt;span style=&quot;background-color: #ffffef; color: #181818; font-family: &amp;quot;consolas&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;lucida console&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , monospace , serif; font-size: 12px; line-height: 22px; white-space: pre;&quot;&gt;&lt;script src=&quot;http://pastebin.com/embed_js.php?i=vHQpXenc&quot;&gt;&lt;/script&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/1094525095153079397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2015/07/things-i-wish-someone-told-me-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1094525095153079397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1094525095153079397'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2015/07/things-i-wish-someone-told-me-when.html' title='Things I wish someone told me when doing Haskell '/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-4638431371795836338</id><published>2015-01-09T06:44:00.000-08:00</published><updated>2015-01-09T06:44:09.511-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Haskell"/><category scheme="http://www.blogger.com/atom/ns#" term="Snippet"/><title type='text'>Function to generate a list of floating point numbers with defined precision in a given range in haskell</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Well the top says it all&lt;br /&gt;
I&#39;ll just put the code here :)&lt;br /&gt;
&lt;br /&gt;
n - &amp;nbsp;no of precisions&lt;br /&gt;
st - starting limit&lt;br /&gt;
en - ending limit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://pastebin.com/embed_js.php?i=SzJbs43H&quot;&gt;&lt;/script&gt;

&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/4638431371795836338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2015/01/function-to-generate-list-of-floating.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/4638431371795836338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/4638431371795836338'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2015/01/function-to-generate-list-of-floating.html' title='Function to generate a list of floating point numbers with defined precision in a given range in haskell'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-1549320004228996933</id><published>2014-12-30T04:48:00.004-08:00</published><updated>2014-12-30T04:48:58.690-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Fix"/><title type='text'>ExceptionInInitializerError when AsyncTask is used inside a Timer</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey people,&lt;br /&gt;
&lt;br /&gt;
A quick one here, I was working on a late project and got this weird bug. Tested my android app on 4.2 working all fine but suddenly it crashed on everything below it. Here&#39;s the code cause the error&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://pastebin.com/embed_js.php?i=r9skJS3d&quot;&gt;&lt;/script&gt;

See the problem here is that according to Android Dev, the Async Task MUST run in the UI thread. But the Timer is having it&#39;s own seperate thread. So, with the help of Stackoverflow :D I managed a solution where the Timer contains a Handler which would be running in the UI thread. Modified code&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://pastebin.com/embed_js.php?i=gqZqutDc&quot;&gt;&lt;/script&gt;

Refer&amp;nbsp;&lt;a href=&quot;http://stackoverflow.com/questions/17049516/android-gingerbread-cant-create-handler-inside-thread-that-has-not-called-loop&quot;&gt;http://stackoverflow.com/questions/17049516/android-gingerbread-cant-create-handler-inside-thread-that-has-not-called-loop&lt;/a&gt; for more references
&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Cya People&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/1549320004228996933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/12/exceptionininitializererror-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1549320004228996933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1549320004228996933'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/12/exceptionininitializererror-when.html' title='ExceptionInInitializerError when AsyncTask is used inside a Timer'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-5522986774567460482</id><published>2014-12-25T09:37:00.002-08:00</published><updated>2014-12-25T09:37:58.321-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Snippet"/><title type='text'>Easily adding animations when Android layout is changed</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey people,&lt;br /&gt;
&lt;br /&gt;
You wont believe that I spent 1.30 hours on this&lt;br /&gt;
Just because i wanted to do some simple animations, like sliding/swiping when a listview of mine is updated :|&lt;br /&gt;
If you ever wanted to do something like, pushing list items downwards when adding a new items or pulling the rest of the layout upwards when visibility of some widget changes&lt;br /&gt;
&lt;br /&gt;
just DONT, DO NOT write your own custom animations. Just add the simple property to your activity layout xml file :D yeaah that is all you have to do&lt;br /&gt;
&lt;br /&gt;
Add this to your xml&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;default prettyprint prettyprinted&quot; style=&quot;background: rgb(238, 238, 238); border: 0px; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, serif; font-size: 14px; line-height: 17.8048000335693px; margin-bottom: 10px; max-height: 600px; overflow: auto; padding: 5px; vertical-align: baseline; width: auto; word-wrap: normal;&quot;&gt;&lt;code style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, monospace, serif; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;android&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;animateLayoutChanges&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;background: transparent; border: 0px; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;background: transparent; border: 0px; color: maroon; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&quot;true&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;
Thank me Later&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/5522986774567460482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/12/easily-adding-animations-when-android.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5522986774567460482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5522986774567460482'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/12/easily-adding-animations-when-android.html' title='Easily adding animations when Android layout is changed'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-1844730754806703947</id><published>2014-12-23T09:43:00.001-08:00</published><updated>2014-12-23T09:44:41.787-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fix"/><category scheme="http://www.blogger.com/atom/ns#" term="Meteor"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Error running meteor : Unexpected mongo exit code 1. Restarting.</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
hey peopple,&lt;br /&gt;
&lt;br /&gt;
yup the title says it, if you have searched for this specific error and came here&lt;br /&gt;
i know the feeling bro, FRUSTATED&lt;br /&gt;
&lt;br /&gt;
here&#39;s a little background of the issue&lt;br /&gt;
&lt;br /&gt;
* you installed the latest meteor version&lt;br /&gt;
* you created a new app&lt;br /&gt;
* when you try to run it&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/search?q=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;oq=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8#q=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;start=10&quot; id=&quot;id-36&quot; style=&quot;background-color: #fcfcfc; color: #303942; font-family: &#39;DejaVu Sans&#39;, Arial, sans-serif; font-size: 12px; line-height: 21px; white-space: nowrap;&quot; target=&quot;_top&quot; title=&quot;Unexpected mongo exit code 1. Restarting. - Google Search&quot;&gt;Unexpected mongo exit code 1. Restarting.&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/search?q=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;oq=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8#q=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;start=10&quot; id=&quot;id-36&quot; style=&quot;background-color: #fcfcfc; color: #303942; font-family: &#39;DejaVu Sans&#39;, Arial, sans-serif; font-size: 12px; line-height: 21px; white-space: nowrap;&quot; target=&quot;_top&quot; title=&quot;Unexpected mongo exit code 1. Restarting. - Google Search&quot;&gt;Unexpected mongo exit code 1. Restarting.&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/search?q=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;oq=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8#q=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;start=10&quot; id=&quot;id-36&quot; style=&quot;background-color: #fcfcfc; color: #303942; font-family: &#39;DejaVu Sans&#39;, Arial, sans-serif; font-size: 12px; line-height: 21px; white-space: nowrap;&quot; target=&quot;_top&quot; title=&quot;Unexpected mongo exit code 1. Restarting. - Google Search&quot;&gt;Unexpected mongo exit code 1. Restarting.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
3 times in your face&lt;br /&gt;
&lt;br /&gt;
DONT WORRY i got the solution&lt;br /&gt;
&lt;br /&gt;
as i found out on a internet forum, this can be solved by updating your c/c++ compilers uptodate. For some stupid reason mongodb wants it that way. So lets do it.&lt;br /&gt;
i am assuming ubuntu environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #f8f8f8; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw2&quot; style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sudo&lt;/span&gt;&amp;nbsp;add-apt-repository ppa:ubuntu-toolchain-r&lt;span class=&quot;sy0&quot; style=&quot;font-weight: bold;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #7a0874; font-weight: bold;&quot;&gt;test&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw2&quot; style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sudo&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw2&quot; style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-get update&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw2&quot; style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sudo&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw2&quot; style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-get install&lt;/span&gt;&amp;nbsp;gcc-&lt;span class=&quot;nu0&quot;&gt;4.6&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw2&quot; style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;sudo&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw2&quot; style=&quot;color: #c20cb9; font-weight: bold;&quot;&gt;apt-get install&lt;/span&gt;&amp;nbsp;g++-&lt;span class=&quot;nu0&quot;&gt;4.6&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
and then run the meteor as usual&lt;br /&gt;
VIOLA!! :D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PS: there&#39;s another version of this problem&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.google.com/search?q=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;oq=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8#q=Unexpected+mongo+exit+code+1.+Restarting.&amp;amp;start=10&quot; id=&quot;id-36&quot; style=&quot;background-color: #fcfcfc; color: #303942; font-family: &#39;DejaVu Sans&#39;, Arial, sans-serif; font-size: 12px; line-height: 21px; white-space: nowrap;&quot; target=&quot;_top&quot; title=&quot;Unexpected mongo exit code 1. Restarting. - Google Search&quot;&gt;Unexpected mongo exit code&amp;nbsp;&lt;b&gt;100&lt;/b&gt;. Restarting.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
see the error code is 100 not 1&lt;br /&gt;
this isnt your error, this error is something related to access violation stuff and you can probably find it in internet everywhere&lt;br /&gt;
&lt;br /&gt;
Happy Meteoring&amp;nbsp;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/1844730754806703947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/12/error-running-meteor-unexpected-mongo.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1844730754806703947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1844730754806703947'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/12/error-running-meteor-unexpected-mongo.html' title='Error running meteor : Unexpected mongo exit code 1. Restarting.'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-3055266374029545269</id><published>2014-12-21T04:35:00.003-08:00</published><updated>2014-12-21T04:47:23.009-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="Snippet"/><title type='text'>The sidebar and content alignment problem</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Spent a fortune of time figuring this out.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://cosketch.com/SavedImages/pcArex0m.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://cosketch.com/SavedImages/pcArex0m.png&quot; height=&quot;480&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
You have a sidebar, more like a drawer and you want the rest of the content of site to take full width of the remaining space of the page. Tried float:left float right? NOPE, here&#39;s how to do it&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot; height=&quot;300&quot; src=&quot;http://jsfiddle.net/manzzup/chcdkbzo/1/embedded/&quot; width=&quot;100%&quot;&gt;&lt;/iframe&gt;

&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/3055266374029545269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/12/the-sidebar-and-content-alignment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/3055266374029545269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/3055266374029545269'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/12/the-sidebar-and-content-alignment.html' title='The sidebar and content alignment problem'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-5159815272913532677</id><published>2014-12-21T04:05:00.001-08:00</published><updated>2014-12-21T04:06:12.603-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Fix"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><category scheme="http://www.blogger.com/atom/ns#" term="VB"/><title type='text'>Getting VB.NET to work in MonoDevelop [tested in Ubuntu]</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey follks,&lt;br /&gt;
&lt;br /&gt;
Kinda strange to crash with something totally new to the blog but wth :D. Okay some background first, I recently had to go FULL time ubuntu [not by choice], but because i screwed up my Windows partition. Any how after much more blaaaaas , i wanted to develop C#, VB and ASP stuff for .net framework 4 in UBUNTU.&lt;br /&gt;
Strange things i know, but believe me a lot of ppl want to do those. So just like everyone else i searched google,&amp;nbsp;&lt;a href=&quot;http://www.mono-project.com/&quot;&gt;Mono&lt;/a&gt;&amp;nbsp;was promising and installed it. [ubuntu 11.10].&lt;br /&gt;
&lt;br /&gt;
When i started Mono, I was really impressed, hell they almost ported VS2010 to ubuntu, the C# features worked great but got dissapointed when i came to the VB.NET section.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Issue&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
When i try to compile the VB.NET code, i get 1 error and 8 warning&lt;br /&gt;
8 warnings : the Assemblies not available for some bla&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; cannot find the import GTK&lt;br /&gt;
1 error : &amp;nbsp; &amp;nbsp; &amp;nbsp; Cannot find the &#39;Windo&#39; class&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_juNPWcwA_r5feoPGCZBa5qn47T70JjP2BcpJlugESSQpAXaK0n-y1vAP342SLYbLtTmqt9QKYB8vFNijrw54rAv4D-ODR5tmwreyVlZj-iVO6CcPqSXrG44DF5LAjSuSbINi0iP-4CE/s1600/error.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_juNPWcwA_r5feoPGCZBa5qn47T70JjP2BcpJlugESSQpAXaK0n-y1vAP342SLYbLtTmqt9QKYB8vFNijrw54rAv4D-ODR5tmwreyVlZj-iVO6CcPqSXrG44DF5LAjSuSbINi0iP-4CE/s400/error.png&quot; height=&quot;356&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
So there i was searching the internet again and again&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Solutions that i found on internet but did not work for me&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1) Changing the project type for VS2008 from VS2008&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Goto Edit-&amp;gt;Preferences-&amp;gt;Load/Save&lt;/i&gt;&lt;br /&gt;
Select VisualStudio 2008 from the dropdown&lt;br /&gt;
And recreate a VB.NET project&lt;br /&gt;
&lt;br /&gt;
Well some said it worked but not for me :/&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2) Changing the .Net framewrok type&lt;/b&gt;&lt;br /&gt;
Double click the Porject from Solution Explorer&lt;br /&gt;
&lt;i&gt;Build -&amp;gt; General&lt;/i&gt;&lt;br /&gt;
Runtime Version : Mono / .Net 2.0&lt;br /&gt;
&lt;br /&gt;
Again did not work for me.&lt;br /&gt;
&lt;br /&gt;
And I noticed that the references of the project are all marked red, unlike when i opened a C# project, so after some seriously wasting for time i finally found this.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Solution&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
1) Double click References. You get Edit references dialog&lt;br /&gt;
2) Goto .Net Assembly tab&lt;br /&gt;
3) Now we are going to add all the DLL files added as&amp;nbsp;references&amp;nbsp;already [but not working]&amp;nbsp;manually&amp;nbsp;again&lt;br /&gt;
4) Goto&lt;i&gt;&amp;nbsp;/usr/lib/mono/gac&lt;/i&gt;&amp;nbsp;[this is where all the assemblies are]&lt;br /&gt;
5) First we&#39;ll add the atk-sharp library&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;Select&amp;nbsp;&lt;i&gt;atk-sharp-&amp;gt;some-directory-with-numbres-&amp;gt;atk-sharp.dll&lt;/i&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;a reference will be added&lt;br /&gt;
6) Repeat the above for other references as well&lt;br /&gt;
&lt;br /&gt;
atk-sharp&lt;br /&gt;
gdk-sharp&lt;br /&gt;
glade-sharp&lt;br /&gt;
glib-sharp&lt;br /&gt;
gtk-sharp&lt;br /&gt;
pango-sharp&lt;br /&gt;
&lt;br /&gt;
Now try to compile the project. =VIOLA= :D&lt;br /&gt;
working like a baby.&lt;br /&gt;
I dont know why those happend but it&#39;s working finally, and its really enough for mt&lt;br /&gt;
&lt;br /&gt;
Ill update for any further errors&lt;br /&gt;
&lt;br /&gt;
Cyah all&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/5159815272913532677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/12/getting-vbnet-to-work-in-monodevelop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5159815272913532677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5159815272913532677'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/12/getting-vbnet-to-work-in-monodevelop.html' title='Getting VB.NET to work in MonoDevelop [tested in Ubuntu]'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_juNPWcwA_r5feoPGCZBa5qn47T70JjP2BcpJlugESSQpAXaK0n-y1vAP342SLYbLtTmqt9QKYB8vFNijrw54rAv4D-ODR5tmwreyVlZj-iVO6CcPqSXrG44DF5LAjSuSbINi0iP-4CE/s72-c/error.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-8479267381971086810</id><published>2014-12-20T23:09:00.000-08:00</published><updated>2014-12-20T23:09:54.173-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="Meteor"/><category scheme="http://www.blogger.com/atom/ns#" term="Snippet"/><title type='text'>Meteor : call javascript function when there&#39;s new data on server</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
I was soo tired just searching about this, believe me I literally read all posts on stackoverflow regarding those keywords&lt;br /&gt;
What I wanna do?&lt;br /&gt;
&lt;br /&gt;
Simple, there&#39;s this javascript function on client side that adds some elements to the DOM&lt;br /&gt;
It get the data from a data source at the server. But I want this data source to be reactive, so that when ever someother user make a change that data source, all the clients connected should feel that change through the said javascript function.&lt;br /&gt;
&lt;br /&gt;
Here&#39;s the code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://pastebin.com/embed_js.php?i=vZbd3USQ&quot;&gt;&lt;/script&gt;

&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/8479267381971086810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/12/meteor-call-javascript-function-when.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/8479267381971086810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/8479267381971086810'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/12/meteor-call-javascript-function-when.html' title='Meteor : call javascript function when there&#39;s new data on server'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-375696216224467896</id><published>2014-12-20T11:27:00.000-08:00</published><updated>2014-12-21T03:02:05.141-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="JQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="Snippet"/><title type='text'>Make jQuery Mobile form submit using the &#39;Go&#39; button in the keyboard</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
Some tiring problemo i got&lt;br /&gt;
&lt;br /&gt;
Since i&#39;m soo into making hybrid apps for android, i always ended up in corners like this where the native and hybrid features donot exactly match&lt;br /&gt;
&lt;br /&gt;
one such place is getting that tiny &#39;Go&#39; button you get in the keyboard in a form to carry out the form submission as in a native app&lt;br /&gt;
&lt;br /&gt;
like this one&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://snipsnippet.files.wordpress.com/2014/05/gokey.png?w=650&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://snipsnippet.files.wordpress.com/2014/05/gokey.png?w=650&quot; height=&quot;400&quot; width=&quot;367&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
here&#39;s how, you just need to specify ALL you inputs in a form and make your submit button of type &#39;submit&#39;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;

&lt;script src=&quot;http://pastebin.com/embed_js.php?i=zXE577s1&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;div&gt;
DONE ! :D&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/375696216224467896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/12/make-jquery-mobile-form-submit-using-go.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/375696216224467896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/375696216224467896'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/12/make-jquery-mobile-form-submit-using-go.html' title='Make jQuery Mobile form submit using the &#39;Go&#39; button in the keyboard'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-1922832108238270532</id><published>2014-07-14T09:11:00.000-07:00</published><updated>2014-12-21T03:14:11.603-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="JQuery"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><title type='text'>jQuery Scroll to Slide plugin (As in Nexus 5 website)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Heyy people,&lt;br /&gt;
&lt;br /&gt;
So today morning we had a little network jam at workplace, which means free time :D And I was asked to make this certain plugin for so long, that i thought i would do it today. If you dont know what this is already, check &lt;a href=&quot;http://www.google.com/nexus/5/&quot; target=&quot;_blank&quot;&gt;Official Nexus 5 Site&lt;/a&gt;. You&#39;ll find a slider under the &#39;photography&#39; section. It behaves like this,&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Slider Features&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Slides images up/down when you scroll with the mouse pointer inside the slider container (Phone in the above case)&lt;/li&gt;
&lt;li&gt;If it&#39;s the last image or the first image of the slider, the normal sliding of the site happens.&lt;/li&gt;
&lt;/ol&gt;
Well, it&#39;s extremely easy to replicate this&amp;nbsp;behavior, with around 15 minutes of work&lt;br /&gt;
We have a css file, JS file and a html file in my demo&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Download Source :&lt;/b&gt;&amp;nbsp;&lt;a href=&quot;https://github.com/ManZzup/scroll-to-slide&quot;&gt;https://github.com/ManZzup/scroll-to-slide&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Logic&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
What we need is to scroll a set of images up and down. Easiest way to achieve this is to position all the images one under the other, and then move the whole set of images by the amount of height of its container&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;scrollToSlide.css&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://pastebin.com/embed_js.php?i=qdtbgvNK&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;scrollToSlide.js&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://pastebin.com/embed_js.php?i=PVFPmH0i&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;i&gt;index.html&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;http://pastebin.com/embed_js.php?i=K7TZ7qjH&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
Isn&#39;t much of a tutorial, but I thought would help someone. Ill be adding this to ma git repos soon, so you can always catch the latest release there :)&lt;br /&gt;
&lt;br /&gt;
Cyah folks&lt;br /&gt;
&lt;br /&gt;
EDIT:&lt;br /&gt;
I just found out the fiddles :D [not really]&lt;br /&gt;
check out the working demo
&lt;iframe width=&quot;100%&quot; height=&quot;300&quot; src=&quot;http://jsfiddle.net/manzzup/j30ortwb/embedded/&quot; allowfullscreen=&quot;allowfullscreen&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/1922832108238270532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/07/jquery-scroll-to-slide-plugin-as-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1922832108238270532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/1922832108238270532'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/07/jquery-scroll-to-slide-plugin-as-in.html' title='jQuery Scroll to Slide plugin (As in Nexus 5 website)'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-5972486394915267975</id><published>2014-06-28T06:34:00.001-07:00</published><updated>2014-12-20T23:04:10.271-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="JSON"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><title type='text'>Handle the precision lose issue in json_decode of php</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey all,&lt;br /&gt;
&lt;br /&gt;
I know, it&#39;s been months. Literally months since ma last post. And kinda hard to comes back after such delay :/&lt;br /&gt;
So i thought I&#39;ll do a short post, a quickie.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Issue&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
In one of ma current projects I have a php web service that should decode some json data comming from a database and then encode it again to be used by the backend of the related android app. Sample data would be something like,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #f8f8f8; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;FeatureCollection&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;generator&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;JOSM&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;features&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;Feature&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;properties&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;geometry&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;LineString&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: #3366cc;&quot;&gt;&quot;coordinates&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc0000;&quot;&gt;80.00769225919207&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc0000;&quot;&gt;7.0701729968129206&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc0000;&quot;&gt;80.00769225919207&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc0000;&quot;&gt;7.076613500681037&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc0000;&quot;&gt;79.9820441862658&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc0000;&quot;&gt;7.076613500681037&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc0000;&quot;&gt;79.98203680670133&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc0000;&quot;&gt;7.100457726964171&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
(Yup something related to latlongs ;) ]&lt;br /&gt;
&lt;br /&gt;
So the problems is that when I do the json_decode on those data, due to the way php handles it, the floating points above loose precision.&lt;br /&gt;
&lt;br /&gt;
ex:&amp;nbsp;&lt;i&gt;7.0701729968129&lt;u&gt;206&lt;/u&gt;&lt;/i&gt; becomes &lt;i&gt;7.0701729968129&lt;/i&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;i&gt;80.00769225919&lt;u&gt;207&lt;/u&gt;&lt;/i&gt; becomes &lt;i&gt;80.007692259192&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
since those floating points are used as some hashed keys later on, this loose of precision started giving me one heck of errors. Hence I searched around a bit to see how exactly I can solve it on the server itself, without altering my android app.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;u&gt;Solutions&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
There were 2 solutions that were popular all around stackoverflow and related forums.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;1) change the precision of php from the system&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
By adding the following line, we could control the&amp;nbsp;behavior&amp;nbsp;of precision&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;kw3&quot; style=&quot;color: #990000; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;ini_set&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st_h&quot; style=&quot;color: blue; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;&#39;precision&#39;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc66cc; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
But it doesnt exactly resolve the issue since, if the original floating point has a lesser precision than the defined, php simply add random numbers to the end (crazzy right?)&lt;br /&gt;
&lt;br /&gt;
ex: &lt;i&gt;7.0701729968129206&lt;/i&gt; with precision 20 becomes &lt;i&gt;7.0701729968129206&lt;u&gt;4453&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;2) Changing the json_decode call as follows would help, but only on php &amp;gt; 5.4&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;re0&quot; style=&quot;color: #000088; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;$decoded&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;json_decode&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;$encoded&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kw4&quot; style=&quot;color: #009900; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; font-weight: bold; line-height: 21px;&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kw4&quot; style=&quot;color: #009900; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; font-weight: bold; line-height: 21px;&quot;&gt;null&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;&amp;nbsp;JSON_BIGINT_AS_STRING&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
So i gave up server side solutions. and thought how exactly json_decode limit those numbers.&lt;br /&gt;
Let&#39;s look at those two truncated floating points&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;7.0701729968129&lt;/i&gt; &amp;nbsp; &amp;nbsp;&amp;lt;---- has 13 decimal points&lt;br /&gt;
&lt;i&gt;80.007692259192&lt;/i&gt; &amp;nbsp; &amp;nbsp;&amp;lt;---- has 12 decimal points&lt;br /&gt;
&lt;br /&gt;
so the&amp;nbsp;precision&amp;nbsp;isnt the same, then it stuck me&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;7.0701729968129&lt;/i&gt; &amp;nbsp; &amp;nbsp;&amp;lt;---- has 14 digits&lt;br /&gt;
&lt;i&gt;80.007692259192&lt;/i&gt; &amp;nbsp; &amp;nbsp;&amp;lt;---- has 14 digits&lt;br /&gt;
&lt;br /&gt;
yayii, so what it basically does is that make sure that the floating point has only 14 digits by first giving required number of digits for the whole number part and make the rest as decimals.&lt;br /&gt;
&lt;br /&gt;
Now this is pretty easy to handle since many languages has built in support to recreate this&amp;nbsp;behavior.&lt;br /&gt;
Here&#39;s a short method in java [which I so gratefully found in a SO post :D ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #f8f8f8; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw1&quot; style=&quot;font-weight: bold;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw4&quot; style=&quot;color: #000066; font-weight: bold;&quot;&gt;double&lt;/span&gt;&amp;nbsp;formatNumber&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw4&quot; style=&quot;color: #000066; font-weight: bold;&quot;&gt;double&lt;/span&gt;&amp;nbsp;n&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MathContext mathContext&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw1&quot; style=&quot;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;MathContext&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc66cc;&quot;&gt;14&lt;/span&gt;, RoundingMode.&lt;span class=&quot;me1&quot; style=&quot;color: #006633;&quot;&gt;HALF_UP&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;kw1&quot; style=&quot;font-weight: bold;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw1&quot; style=&quot;font-weight: bold;&quot;&gt;new&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #003399;&quot;&gt;BigDecimal&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;n, mathContext&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;.&lt;span class=&quot;me1&quot; style=&quot;color: #006633;&quot;&gt;doubleValue&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
NOTE: After some observation I found that &lt;b&gt;Rounding Half UP&lt;/b&gt; is the correct way to recreate json_decode correctly, and the number of total digits may vary&lt;br /&gt;
i got 12 and 14 in two different servers, depend on the php configuration&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hope to write more :)&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/5972486394915267975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/06/handle-precision-lose-issue-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5972486394915267975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/5972486394915267975'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/06/handle-precision-lose-issue-in.html' title='Handle the precision lose issue in json_decode of php'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-3118078504992827317</id><published>2014-05-01T04:02:00.000-07:00</published><updated>2014-12-20T23:04:47.793-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><title type='text'>Creating PDF file from dynamic HTML in Android</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hellow world,&lt;br /&gt;
&lt;br /&gt;
So i was missing from action for few weeks now. I blame it on my work because I&#39;m always dead tired (only can watch some films for another 4 hours) after i come back from work each day :D. Anyway once again I was given some task that seem&#39;s hard at first.&lt;br /&gt;
&lt;br /&gt;
We have a mobile app in android which is not surprisingly a hybrid app. Hence, all the UI elements are HTML/javascript. One day the project managers in a weird way wanted to make a PDF out of some HTML content in display. Now the HTML content here are a dynamic table that&#39;s created based on data from a webservice + user interaction. So no way of hard-coding anything.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Todo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Retrieve dynamic HTML from a webview in Android and make a PDF from the content in it&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Things you need&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/itext/&quot; target=&quot;_blank&quot;&gt;iTextPDF&lt;/a&gt; : an open source PDF creation library for java, works well in android too&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://sourceforge.net/projects/xmlworker/&quot; target=&quot;_blank&quot;&gt;XMLWorker&lt;/a&gt; : a plugin for iTextPDF to support XML/HTML&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
Download these and you need only to reference 2 libraries, those are&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;itextpdf-5.x.x.jar&lt;/li&gt;
&lt;li&gt;xmlworker-5.x.x.jar&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;CODE&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;
Let&#39;s take a look a the sample HTML i would be converting to PDF&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-spacing: 0px; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: #191919; direction: ltr !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 14px; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important;&quot;&gt;&lt;tbody style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;
&lt;tr style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&lt;td class=&quot;gutter&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(175, 175, 175) !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;line number2 index1 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;line number3 index2 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;line number4 index3 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;line number5 index4 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
5&lt;/div&gt;
&lt;div class=&quot;line number6 index5 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
6&lt;/div&gt;
&lt;div class=&quot;line number7 index6 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
7&lt;/div&gt;
&lt;div class=&quot;line number8 index7 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
8&lt;/div&gt;
&lt;div class=&quot;line number9 index8 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
9&lt;/div&gt;
&lt;div class=&quot;line number10 index9 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
10&lt;/div&gt;
&lt;div class=&quot;line number11 index10 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
11&lt;/div&gt;
&lt;div class=&quot;line number12 index11 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
12&lt;/div&gt;
&lt;div class=&quot;line number13 index12 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
13&lt;/div&gt;
&lt;div class=&quot;line number14 index13 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
14&lt;/div&gt;
&lt;div class=&quot;line number15 index14 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
15&lt;/div&gt;
&lt;div class=&quot;line number16 index15 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
16&lt;/div&gt;
&lt;div class=&quot;line number17 index16 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
17&lt;/div&gt;
&lt;div class=&quot;line number18 index17 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
18&lt;/div&gt;
&lt;div class=&quot;line number19 index18 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
19&lt;/div&gt;
&lt;div class=&quot;line number20 index19 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
20&lt;/div&gt;
&lt;div class=&quot;line number21 index20 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
21&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;code&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: 883px;&quot;&gt;&lt;div class=&quot;container&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;
&lt;div class=&quot;line number1 index0 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;table&lt;/code&gt; &lt;code class=&quot;xml color1&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: gray !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;width&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;xml string&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&quot;100%&quot;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number2 index1 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;thead&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number3 index2 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;tr&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number4 index3 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;th&lt;/code&gt; &lt;code class=&quot;xml color1&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: gray !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;style&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;xml string&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&quot;font-weight:bold;text-align:left&quot;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;Item Name&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;th&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number5 index4 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;th&lt;/code&gt; &lt;code class=&quot;xml color1&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: gray !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;style&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;xml string&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&quot;font-weight:bold;text-align:center&quot;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;Base Currency&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;th&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number6 index5 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;th&lt;/code&gt; &lt;code class=&quot;xml color1&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: gray !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;style&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;xml string&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&quot;font-weight:bold;text-align:right&quot;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;Base Amount&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;th&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number7 index6 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;tr&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number8 index7 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;thead&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number9 index8 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;tbody&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number10 index9 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;tr&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number11 index10 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;Basic&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number12 index11 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;LKR&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number13 index12 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;75000&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number14 index13 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;tr&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number15 index14 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;tr&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number16 index15 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;Another&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number17 index16 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;LKR&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number18 index17 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;25000&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;td&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number19 index18 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;tr&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number20 index19 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;tbody&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number20 index19 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;lt;/&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;table&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;NOTE:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;We are using a XML parser here, so your HTML structure should be perfect. No loose ends, incomplete tags, open quotes bla bla like that&lt;/li&gt;
&lt;li&gt;While this supports retrieving style from external CSS files, the best thing is to embed it into the HTML code itself. Either in&lt;i&gt; &amp;lt;style&amp;gt;&amp;lt;/style&amp;gt;&lt;/i&gt; tags or as inline-style.&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
So let&#39;s check the code:&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-spacing: 0px; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: #191919; direction: ltr !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 14px; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important;&quot;&gt;&lt;tbody style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;
&lt;tr style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&lt;td class=&quot;gutter&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(175, 175, 175) !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&lt;div class=&quot;line number1 index0 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
1&lt;/div&gt;
&lt;div class=&quot;line number2 index1 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
2&lt;/div&gt;
&lt;div class=&quot;line number3 index2 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
3&lt;/div&gt;
&lt;div class=&quot;line number4 index3 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
4&lt;/div&gt;
&lt;div class=&quot;line number5 index4 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
5&lt;/div&gt;
&lt;div class=&quot;line number6 index5 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
6&lt;/div&gt;
&lt;div class=&quot;line number7 index6 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
7&lt;/div&gt;
&lt;div class=&quot;line number8 index7 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
8&lt;/div&gt;
&lt;div class=&quot;line number9 index8 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
9&lt;/div&gt;
&lt;div class=&quot;line number10 index9 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
10&lt;/div&gt;
&lt;div class=&quot;line number11 index10 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
11&lt;/div&gt;
&lt;div class=&quot;line number12 index11 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
12&lt;/div&gt;
&lt;div class=&quot;line number13 index12 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
13&lt;/div&gt;
&lt;div class=&quot;line number14 index13 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
14&lt;/div&gt;
&lt;div class=&quot;line number15 index14 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
15&lt;/div&gt;
&lt;div class=&quot;line number16 index15 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
16&lt;/div&gt;
&lt;div class=&quot;line number17 index16 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
17&lt;/div&gt;
&lt;div class=&quot;line number18 index17 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
18&lt;/div&gt;
&lt;div class=&quot;line number19 index18 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
19&lt;/div&gt;
&lt;div class=&quot;line number20 index19 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
20&lt;/div&gt;
&lt;div class=&quot;line number21 index20 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
21&lt;/div&gt;
&lt;div class=&quot;line number22 index21 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
22&lt;/div&gt;
&lt;div class=&quot;line number23 index22 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
23&lt;/div&gt;
&lt;div class=&quot;line number24 index23 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
24&lt;/div&gt;
&lt;div class=&quot;line number25 index24 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
25&lt;/div&gt;
&lt;div class=&quot;line number26 index25 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
26&lt;/div&gt;
&lt;div class=&quot;line number27 index26 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
27&lt;/div&gt;
&lt;div class=&quot;line number28 index27 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
28&lt;/div&gt;
&lt;div class=&quot;line number29 index28 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: rgb(108, 226, 108) !important; border-right-style: solid !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border-width: 0px 3px 0px 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0.5em 0px 1em !important; position: static !important; right: auto !important; text-align: right !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
29&lt;/div&gt;
&lt;/td&gt;&lt;td class=&quot;code&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: 1565px;&quot;&gt;&lt;div class=&quot;container&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;
&lt;div class=&quot;line number1 index0 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;import&lt;/code&gt; &lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;com.itextpdf.text.Document;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number2 index1 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;import&lt;/code&gt; &lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;com.itextpdf.text.pdf.PdfWriter;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number3 index2 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;import&lt;/code&gt; &lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;com.itextpdf.tool.xml.XMLWorkerHelper;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number4 index3 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;line number5 index4 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;try&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;{&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number6 index5 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java comments&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;//your_html_here is a variable with all the dynamic HTML stuff&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number7 index6 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;String html = &lt;/code&gt;&lt;code class=&quot;java string&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&quot;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&amp;lt;body&amp;gt;&quot;&lt;/code&gt; &lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;+ your_html_here + &lt;/code&gt;&lt;code class=&quot;java string&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&quot;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;;&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number8 index7 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number9 index8 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java comments&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;//Open a new document instance&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number10 index9 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;Document doc = &lt;/code&gt;&lt;code class=&quot;java keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;new&lt;/code&gt; &lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;Document();&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number11 index10 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number12 index11 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java comments&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;//We convert the string to a byte array, so we can input it to the XMLWorker instance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number13 index12 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;InputStream in = &lt;/code&gt;&lt;code class=&quot;java keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;new&lt;/code&gt; &lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;ByteArrayInputStream(html.getBytes());&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number14 index13 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number15 index14 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java comments&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;//We write the file to a app accesbile location&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number16 index15 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;PdfWriter pdf = PdfWriter.getInstance(doc, &lt;/code&gt;&lt;code class=&quot;java keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;new&lt;/code&gt; &lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;FileOutputStream(p.getApplication().getExternalFilesDir(&lt;/code&gt;&lt;code class=&quot;java string&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&quot;MyFileStorage&quot;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;) + &lt;/code&gt;&lt;code class=&quot;java string&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&quot;/out.pdf&quot;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;));&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number17 index16 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number18 index17 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java comments&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;//open the document to write&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number19 index18 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;doc.open();&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number20 index19 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number21 index20 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java comments&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;//parser and write the file&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number22 index21 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;XMLWorkerHelper.getInstance().parseXHtml(pdf, doc,in);&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number23 index22 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;line number24 index23 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java comments&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;//close things before it gets messey&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number25 index24 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;doc.close();&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number26 index25 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;in.close();&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number27 index26 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;}&lt;/code&gt;&lt;code class=&quot;java keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;catch&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;(Exception e){&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number28 index27 alt1&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java spaces&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;System.out.println(e.getMessage());&lt;/code&gt;&lt;/div&gt;
&lt;div class=&quot;line number29 index28 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-color: white !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;java plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;}&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Few things to note:&lt;br /&gt;
1) You need to add the following for the manifest to give write access to the app&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;center-block entry-content&quot; style=&quot;background-color: white !important; border: 0px; box-sizing: border-box; color: #191919; font-family: Oxygen, sans-serif; font-size: 14px; line-height: 27px; margin: 0px auto; max-width: 680px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; font-style: inherit; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;div class=&quot;syntaxhighlighter  xml&quot; id=&quot;highlighter_805778&quot; style=&quot;border: 0px; box-sizing: border-box; font-family: inherit; font-size: 1em !important; font-style: inherit; margin: 1em 0px !important; outline: 0px; overflow-x: auto !important; overflow-y: hidden !important; padding: 0px; position: relative !important; vertical-align: baseline; width: 680px;&quot;&gt;
&lt;table border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-spacing: 0px; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important;&quot;&gt;&lt;tbody style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;
&lt;tr style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&lt;td class=&quot;code&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: 861px;&quot;&gt;&lt;div class=&quot;container&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: relative !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;
&lt;div class=&quot;line number1 index0 alt2&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 1em !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;&quot;&gt;
&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&lt;br class=&quot;Apple-interchange-newline&quot; /&gt;&amp;lt;&lt;/code&gt;&lt;code class=&quot;xml keyword&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;uses-permission&lt;/code&gt; &lt;code class=&quot;xml color1&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: gray !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;android:name&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;=&lt;/code&gt;&lt;code class=&quot;xml string&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&quot;android.permission.WRITE_EXTERNAL_STORAGE&quot;&lt;/code&gt;&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;/&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;code class=&quot;xml plain&quot; style=&quot;-webkit-box-shadow: none !important; background-image: none !important; border-bottom-left-radius: 0px !important; border-bottom-right-radius: 0px !important; border-top-left-radius: 0px !important; border-top-right-radius: 0px !important; border: 0px !important; bottom: auto !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Consolas, &#39;Bitstream Vera Sans Mono&#39;, &#39;Courier New&#39;, Courier, monospace !important; font-size: 1em !important; height: auto !important; left: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; right: auto !important; top: auto !important; vertical-align: baseline !important; width: auto !important;&quot;&gt;&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
2) Since our sample HTML code didnt have the opening tags like &lt;i&gt;&amp;lt;html&amp;gt;&lt;/i&gt;, we have to put them on hand.&lt;br /&gt;
3) Change out.pdf to the filename you want, but to a .pdf of course :3&lt;br /&gt;
4) Your file can be found at &lt;i&gt;/external/storage/mnt/bla/Android/data/&amp;lt;you app related name&amp;gt;/MyStorageFiles/&lt;/i&gt; firectory&lt;br /&gt;
&lt;br /&gt;
That&#39;s brief i know, but this would get you PDF-ing fast :D&lt;br /&gt;
&lt;br /&gt;
Cya ppl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/3118078504992827317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/05/creating-pdf-file-from-dynamic-html-in.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/3118078504992827317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/3118078504992827317'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/05/creating-pdf-file-from-dynamic-html-in.html' title='Creating PDF file from dynamic HTML in Android'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-2052186252785650186</id><published>2014-03-07T02:34:00.001-08:00</published><updated>2016-01-03T18:07:54.561-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AJAX"/><category scheme="http://www.blogger.com/atom/ns#" term="php"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><title type='text'>Customize nicEdit Image upload to support uploading images to your server</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;link href=&quot;http://fonts.googleapis.com/css?family=Varela+Round&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;/link&gt;
&lt;style&gt;
.bcont{
   font-family: &#39;Varela Round&#39;, sans-serif; 
   line-height: 25px;
   font-size: 16px
}
.grey{
   background-color:#ffffff;
   color:#C1004F;
   padding:5px
}
.code{
   background-color:#181817;
   color:#008A00;
   padding:5px;
}

&lt;/style&gt;
&lt;br /&gt;
&lt;div class=&quot;bcont&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Hey all,&lt;br /&gt;
&lt;br /&gt;
So the last week was awesome, I ended up doing some crazy stuff. But this isnt one of them :D Anyway I was told by a friend that he need a WYSIWYG editor for his project. Naturally &lt;a href=&quot;http://nicedit.com/&quot; target=&quot;_blank&quot;&gt;nicEdit&lt;/a&gt;&amp;nbsp;was my choice. Yet again he needed the support of adding image to the content as well, I mean uploading. So I searched and luckily nicEdit has an upload plugin. So the bad newss? Bad news is it&#39;s core is designed to upload the image to&amp;nbsp;&lt;a href=&quot;http://imgur.com/&quot; target=&quot;_blank&quot;&gt;imgur&lt;/a&gt;&amp;nbsp;and attach the url given by their API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #006ac1; color: white; padding: 10px;&quot;&gt;Problem?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirUYiUJoRb4PP_dkrZT28vDHWsZMTZv18ItKDiMWMTPUz68HRysYxVg4ChdCrSBHxyMiWXg8kaoXqy1lVH4Bo51PRFC29SZZx8oY83S-HSKC7VQcEsaNtvor5bLFkD7S67uC7Os08wPBhZ/s1600/niclogo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirUYiUJoRb4PP_dkrZT28vDHWsZMTZv18ItKDiMWMTPUz68HRysYxVg4ChdCrSBHxyMiWXg8kaoXqy1lVH4Bo51PRFC29SZZx8oY83S-HSKC7VQcEsaNtvor5bLFkD7S67uC7Os08wPBhZ/s1600/niclogo.png&quot; /&gt;&lt;/a&gt;All my images would be gone to imgur, I really dont have much problem with that except that every content I post would be depending on the servers of imgur. What if imgur decided that my content is&amp;nbsp;violating&amp;nbsp;their TOS after sometime? :O (Just kidding, need to make a point)&lt;br /&gt;
&lt;br /&gt;
So I hacked the script a bit and saw that their upload mechanism which is AJAX based isnt overly complicated.Best way to use our server to keep images is to make a php script that would &lt;b&gt;mimic &lt;/b&gt;&lt;i&gt;imgur &lt;/i&gt;API. Wasn&#39;t that hard. First let&#39;s see how the existing nicEdit upload works.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot;&gt;nicEdit upload process&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
1) User upload image&lt;br /&gt;
2) nicEdit make a creates a POST request to the imgur API&lt;br /&gt;
3) API key is added to request&lt;br /&gt;
4) Img is added as if it&#39;s being uploaded using a HTML form (POST content is send as a multipart form)&lt;br /&gt;
5) Request is send to imgur, if everything is fine imgur API responds with a JSON object containing different info about the image&lt;br /&gt;
6) nicEdit attach the image using the link send found in the JSON object&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #006ac1; color: white; padding: 10px;&quot;&gt;Writing something to mimic the imgur API&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Script will be written in php but you&#39;re free to make it in any language as long as you correctly capture the request and return a correctly formatted JSON object&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot;&gt;Request&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Request as I mentioned before is as if it&#39;s comming from a HTML file upload form. Basically your image data would be available from $_FILES array. From there on we follow the simple php uploader mechanism that is,&lt;br /&gt;
&lt;br /&gt;
1) Check whether the image is a valid image type, to prevent attacks&lt;br /&gt;
2) Move the image file from the php temp directory to our img directory&lt;br /&gt;
3) Rename it with something unique, I usually do random() or md5() functions for the new name&lt;br /&gt;
4) Get the URL to the uploaded image&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;NOTE:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
At this stage you could choose between giving the user a direct URL to the image or making another php script that would return the image data with headers. Well it&#39;s more secure, but too much of a trouble. I will continue as if we are giving the direct link to the image.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot;&gt;Response&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This is indeed the tricky part. Even if we return the URL to the nicEdit plugin it won&#39;t work since it&#39;s expecting a JSON object from imgur and I dont want to hack apart everything from the script (No one does :S). This is how the return JSON object would look like (Included ONLY the parts important to ur)&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;code&quot;&gt;
Response (JSON Object)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; - upload =&amp;gt; (Array)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - links =&amp;gt; (Array)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- original =&amp;gt; &amp;nbsp;(URL of img)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- image =&amp;gt; (Array)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- width =&amp;gt; width of image&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- height =&amp;gt; height of image&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Rest is just simple, we make a JSON object just like this and return :) So let&#39;s start&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: #006ac1; color: white; padding: 10px;&quot;&gt;Code&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;img.php&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #f8f8f8; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px; text-align: left;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw2&quot; style=&quot;font-weight: bold;&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: #666666;&quot;&gt;//Check if we are getting the image&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw1&quot; style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;isset&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$_FILES&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;st_h&quot; style=&quot;color: blue;&quot;&gt;&#39;image&#39;&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;{&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;co1&quot; style=&quot;color: #666666;&quot;&gt;//Get the image array of details&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$img&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$_FILES&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;st_h&quot; style=&quot;color: blue;&quot;&gt;&#39;image&#39;&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;co1&quot; style=&quot;color: #666666;&quot;&gt;//The new path of the uploaded image, rand is just used for the sake of it&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$path&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;upload/&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;rand&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$img&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;co1&quot; style=&quot;color: #666666;&quot;&gt;//Move the file to our new path&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;move_uploaded_file&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$img&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;st_h&quot; style=&quot;color: blue;&quot;&gt;&#39;tmp_name&#39;&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;co1&quot; style=&quot;color: #666666;&quot;&gt;//Get image info, reuiqred to biuld the JSON object&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$data&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;getimagesize&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;co1&quot; style=&quot;color: #666666;&quot;&gt;//The direct link to the uploaded image, this might varyu depending on your script location &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$link&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;http://&lt;span class=&quot;es4&quot; style=&quot;color: #006699; font-weight: bold;&quot;&gt;$_SERVER[HTTP_HOST]&lt;/span&gt;&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;/nicedit/&quot;&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$path&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;co1&quot; style=&quot;color: #666666;&quot;&gt;//Here we are constructing the JSON Object&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$res&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;upload&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;links&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;original&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;image&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;width&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;height&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;co1&quot; style=&quot;color: #666666;&quot;&gt;//echo out the response :)&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;kw1&quot; style=&quot;color: #b1b100;&quot;&gt;echo&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;json_encode&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$res&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;sy1&quot; style=&quot;font-weight: bold;&quot;&gt;?&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;NOTE:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
1) All image are uploaded to a directory named &lt;b&gt;upload, &lt;/b&gt;so make sure that dir exists and is CHMOD to 777 (Given read/write permission)&lt;br /&gt;
2) Change line 14 to suit your server path&lt;br /&gt;
&lt;br /&gt;
Now we need to tell nicEdit that we are having our own upload script, luckily it&#39;s easy.&lt;br /&gt;
&lt;br /&gt;
Open the nicEdit.js (if you download the whole thing with nicUpload plugin).&lt;br /&gt;
Find the line starting like&amp;nbsp;&lt;i&gt;xhr.open(&quot;POST&quot;...&amp;nbsp;&lt;/i&gt;&lt;br /&gt;
Replace it with&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: large; line-height: 21px;&quot;&gt;xhr.open(&quot;POST&quot;, &quot;http://example.com/path_to_above_script/img.php&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DONE ! Now try uploading something and it would go directly to your server :)&lt;br /&gt;
&lt;br /&gt;
Be back soon !&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;EDIT&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/b&gt;
Some of the comments below suggested that the response array should be changed like following for it to work correctly. I think it should be an issue with the latest nicEdit script. So if you are having troubles please try with this code for the &#39;$res&#39; array&lt;br /&gt;
Special thanks for&amp;nbsp;&lt;a href=&quot;http://jjsteing.com/&quot; rel=&quot;nofollow&quot; style=&quot;background-color: white; color: #888888; font-family: Oxygen, sans-serif; font-size: 18px; font-weight: bold; line-height: 25.2px; text-decoration: none;&quot;&gt;jjsteing&lt;/a&gt;&amp;nbsp;for pointing the new code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #f8f8f8; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$res&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;data&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #990000;&quot;&gt;array&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;(&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;links&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$link&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;width&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class=&quot;st0&quot; style=&quot;color: blue;&quot;&gt;&quot;height&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #339933;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re0&quot; style=&quot;color: #000088;&quot;&gt;$data&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nu0&quot; style=&quot;color: #cc66cc;&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class=&quot;br0&quot; style=&quot;color: #009900;&quot;&gt;));&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/2052186252785650186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/03/customize-nicedit-image-upload-to.html#comment-form' title='57 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/2052186252785650186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/2052186252785650186'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/03/customize-nicedit-image-upload-to.html' title='Customize nicEdit Image upload to support uploading images to your server'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirUYiUJoRb4PP_dkrZT28vDHWsZMTZv18ItKDiMWMTPUz68HRysYxVg4ChdCrSBHxyMiWXg8kaoXqy1lVH4Bo51PRFC29SZZx8oY83S-HSKC7VQcEsaNtvor5bLFkD7S67uC7Os08wPBhZ/s72-c/niclogo.png" height="72" width="72"/><thr:total>57</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3553156908352119879.post-4681079032738804794</id><published>2014-02-18T02:08:00.000-08:00</published><updated>2014-12-20T23:05:27.944-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="CSS"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><category scheme="http://www.blogger.com/atom/ns#" term="JavaScript"/><category scheme="http://www.blogger.com/atom/ns#" term="Tute"/><title type='text'>Making hybrid android apps with native like performance</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;link href=&quot;http://fonts.googleapis.com/css?family=Varela+Round&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;/link&gt;
&lt;style&gt;
.bcont{
   font-family: &#39;Varela Round&#39;, sans-serif; 
   line-height: 25px;
   font-size: 16px
}
.grey{
   background-color:#ffffff;
   color:#C1004F;
   padding:5px
}

&lt;/style&gt;

&lt;br /&gt;
&lt;div class=&quot;bcont&quot; dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Heyy all,&lt;br /&gt;
&lt;br /&gt;
Today I finally&amp;nbsp;thought&amp;nbsp;that it&#39;s time to post the long awaited guidelines in making hybrid apps post. Last month most of my time was dedicated to experiment on different aspects regarding hybrid app development and finding ways to get native like experience from the those apps.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: white; font-size: large;&quot;&gt;&lt;span style=&quot;background-color: #006ac1; padding: 10px;&quot;&gt;What are hybrid apps?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
IMHO most of the time spend making an android app is to make its layout. Yeah ! because the XML layout making is such a pain in the a$$. To add upto these&amp;nbsp;inconveniences, with each Android SDK, there are new UI components released to the developers. Problem being that these components wont support the older devices. So the result is an app that does look the same on all devices.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Hybrids apps are NOT web apps.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
They are native android apps but the interface is build with HTML+CSS+Javascript than using the XML components given. Such interfaces are shown on top of a WebView component and a javascript interface is used to facilitate the communication between the interface and the native part.&lt;br /&gt;
Anyhow, the purpose of this post is to note some key points I found worth following in making hybrid apps. These would assure a great performance increase in your apps. [I promise ;)]&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJOjoral8ZGHp0V5Z-hHSmr4oUJpQaqZqGkeZglNcueMmV-cXKTe1IVl4EqIR2-ii3JS951LSplUTtXjBDL3I_Whm8N_0YPbJrRnNAxj9wVTWGaPTaVUuQDe5lVwRiYPLosCCzDnJVwIfY/s1600/Screenshot_2014-02-18-09-57-37.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJOjoral8ZGHp0V5Z-hHSmr4oUJpQaqZqGkeZglNcueMmV-cXKTe1IVl4EqIR2-ii3JS951LSplUTtXjBDL3I_Whm8N_0YPbJrRnNAxj9wVTWGaPTaVUuQDe5lVwRiYPLosCCzDnJVwIfY/s1600/Screenshot_2014-02-18-09-57-37.png&quot; height=&quot;400&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIjaeJL7TZhB4H7zfeRC4C4xcG2dLpgdaCTFEiVVJdMRBuoxQMgeV0Z1091tPAbiOdvZ4_nkMeVwmOFOlLUEUOllIUmL_iWzgv64otcQewadFXAbvZORdqlK9cMpgVaWn4qnbJH3t4Qeca/s1600/Screenshot_2014-02-18-15-26-00.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIjaeJL7TZhB4H7zfeRC4C4xcG2dLpgdaCTFEiVVJdMRBuoxQMgeV0Z1091tPAbiOdvZ4_nkMeVwmOFOlLUEUOllIUmL_iWzgv64otcQewadFXAbvZORdqlK9cMpgVaWn4qnbJH3t4Qeca/s1600/Screenshot_2014-02-18-15-26-00.png&quot; height=&quot;400&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;1) Say no to heavy frameworks == no jQuery&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: right; margin-left: 1em; text-align: right;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dbeTEUiV-yzfpHzh_FIE1gMsB7BAG8Gp3p8H2A333130TGRQpybS7OJbAVeEIdUcely-FKRwPYOMmQLhF4qIP1Neu1WD-c7ouJPF1YHQ-FPqvyS8A5wGaSJiKwamdgSAn9bm_Fqh14tF/s1600/Screenshot_2014-02-18-15-28-22.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2dbeTEUiV-yzfpHzh_FIE1gMsB7BAG8Gp3p8H2A333130TGRQpybS7OJbAVeEIdUcely-FKRwPYOMmQLhF4qIP1Neu1WD-c7ouJPF1YHQ-FPqvyS8A5wGaSJiKwamdgSAn9bm_Fqh14tF/s1600/Screenshot_2014-02-18-15-28-22.png&quot; height=&quot;400&quot; width=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;UI designed with jQuery Mobile&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Say whaa? The first commercial hybrid app I made, I built it using the jQuery mobile framework. It was easy as hell for me to prototype the app and even easier to&amp;nbsp;integrate&amp;nbsp;it since almost everything was handler by the framework itself.&lt;br /&gt;
&lt;br /&gt;
So the problem? Problem is the performance itself. jQuery mobile is a framework designed to make webapps, not hybrid apps. Hence the goal of it is to speed up the development process and the result being the interfaces made with jquery was soo damn slow. So say no to frameworks.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;2) No helper libraries&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Most people often confuse jQuery syntax with pure Javascript syntax. It has spread almost like a disease (a good one :D). Helper libraries are good for fast and rapid development but &lt;i&gt;is it good for developing mobile interfaces where every CPU cycle worths?&lt;/i&gt; I dont think so !&lt;br /&gt;
It&#39;s a fact that boilerplate pure javascript&amp;nbsp;performs&amp;nbsp;many times faster than any given library. So if u wanna have sleek &amp;amp; smooth UI performance in your hybrid app, learn to write javascript.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;3) Minimize dynamic content&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
One of the most used features of any framework is to take out the work of the developer by adding stuff dynamically.&lt;br /&gt;
ex:&lt;br /&gt;
in jQuery mobile framework we define a list like this&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #f8f8f8; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&amp;nbsp;data-role&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;listview&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;One&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;Two&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;Three&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
But the actual final output of the browser is this&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #f8f8f8; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&amp;nbsp;data-role&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;listview&quot;&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #000066;&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;ui-listview&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #000066;&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;ui-li-static ui-body-inherit ui-first-child&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;One&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #000066;&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;ui-li-static ui-body-inherit&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Two&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: #000066;&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;st0&quot; style=&quot;color: red;&quot;&gt;&quot;ui-li-static ui-body-inherit ui-last-child&quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;Three&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;li&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;sc2&quot; style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;kw2&quot; style=&quot;color: black; font-weight: bold;&quot;&gt;ul&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
See the styling part? the framework takes care of adding those but at the cost of wasting some processing overhead of the device. Although this seems&amp;nbsp;negligible for a small list, when all those dynamics comes together it becomes a lot messy. So the best practice for hybrid UI design would be to write all those class additions your own self.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;4) &amp;nbsp;Stick to Android design patterns as much as possible&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Most of us tend to break the normal ways of an android UI the moment we lay our hands on HTML which is very natural ;). But it doesnt do much good do us. Be free to structure your layout as you like, but dont make it so absurd that it no longer seems like an android app at all.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;5) DONT be cross browser compatible&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&quot;That&#39;s it ! I&#39;m done with this guy&quot; would be what you are&amp;nbsp;thinking&amp;nbsp;now. In a time when everything is done to cross-compatible I&#39;m saying to throw it away at once. But in a close look, if we are making an interface for an android app, do we need to run it on another 1000 web browser at all?&lt;br /&gt;
NO&lt;br /&gt;
The only thing in which our interfaced should work is the WebView control. FYI webview control comes with the same rendering engine as of Google Chrome, which is webkit. Although it&#39;s not the exact, I can assure that testing your interface in google chrome would be enough. Cut off all the other cross browser crap, it would just slow you down.&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #f8f8f8; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;strike&gt;-webkit-border-radius&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;:&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re3&quot; style=&quot;color: #993333;&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;;&lt;/span&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;strike&gt;-moz-border-radius&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;:&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re3&quot; style=&quot;color: #993333;&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;;&lt;/span&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;strike&gt;-o-border-radius&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;:&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re3&quot; style=&quot;color: #993333;&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;;&lt;/span&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;strike&gt;-ms-border-radius&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;:&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re3&quot; style=&quot;color: #993333;&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;;&lt;/span&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;strike&gt;&lt;span class=&quot;kw1&quot; style=&quot;font-weight: bold;&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;:&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re3&quot; style=&quot;color: #993333;&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;;&lt;/span&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
/* correct */&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
-webkit-border-radius&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;:&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re3&quot; style=&quot;color: #993333;&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw1&quot; style=&quot;font-weight: bold;&quot;&gt;border-radius&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;:&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;re3&quot; style=&quot;color: #993333;&quot;&gt;5px&lt;/span&gt;&lt;span class=&quot;sy0&quot; style=&quot;color: #00aa00;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;b class=&quot;grey&quot; style=&quot;font-size: large;&quot;&gt;6) DONT mix-up backend with frontend&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Remember we are just making the UI of our app in HTML. If we try to do some work of the backend (which is Java) from our frontend (which is javascript), we would end up in a big damn mess. Leave the heavy processing to Java and handle the lame stuff with javascript (No offense);&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;7) One page per One Activity&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
A blunder that most of us do in hybrid apps is to use one Activity for the whole app and count on the AJAX navigation system to be our app&#39;s navigation as well. Well DONT. This would end up making the user confused about the function of the hardware back button.&lt;br /&gt;
Limit only one and only one page per activity.&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;grey&quot; style=&quot;font-size: large;&quot;&gt;&lt;b&gt;8) No AJAX&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Well said in the previous point but stressing again, donot use AJAX at all. If native apps donto have something, hybrid ones should not have them as well. So obviously you cant have AJAX in your pages.&lt;br /&gt;
&lt;br /&gt;
This is all I can remember for now, but I&#39;ll update the post when I meet new stuff. Anyway those are just my opinions of a good hybrid apps (solely based on my&amp;nbsp;experience). If you differ on any point feel feel to contact me, for all I know I can be damn wrong :) (I&#39;m not :D)&lt;br /&gt;
&lt;br /&gt;
PS: Check out this nice little framework I compiled for making hybrid apps. I tried to follow all my rules, I think&lt;br /&gt;
&lt;a href=&quot;http://manzzup.github.io/thf/&quot; target=&quot;_blank&quot;&gt;The Hybrid Framework&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Cyah all&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://manzzup.blogspot.com/feeds/4681079032738804794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://manzzup.blogspot.com/2014/02/making-hybrid-android-apps-with-native.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/4681079032738804794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3553156908352119879/posts/default/4681079032738804794'/><link rel='alternate' type='text/html' href='http://manzzup.blogspot.com/2014/02/making-hybrid-android-apps-with-native.html' title='Making hybrid android apps with native like performance'/><author><name>Manujith</name><uri>http://www.blogger.com/profile/13544182850733064734</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiJOjoral8ZGHp0V5Z-hHSmr4oUJpQaqZqGkeZglNcueMmV-cXKTe1IVl4EqIR2-ii3JS951LSplUTtXjBDL3I_Whm8N_0YPbJrRnNAxj9wVTWGaPTaVUuQDe5lVwRiYPLosCCzDnJVwIfY/s72-c/Screenshot_2014-02-18-09-57-37.png" height="72" width="72"/><thr:total>1</thr:total></entry></feed>