Project

General

Profile

Activity

From 09/23/2012 to 10/22/2012

10/22/2012

03:12 PM Feature #1688: move LEAVE/NEXT rewriting from annotations into fixups
This will allow simplification of the code handling this as well as improvements in unreachable processing (which hap... Eric Faulhaber
03:11 PM Feature #1688 (New): move LEAVE/NEXT rewriting from annotations into fixups
Eric Faulhaber
03:10 PM Feature #1687: remove frames which are completely scoped to dead code
A frame which is completely scoped to dead code can be safely removed along with the dead code (requires taking into ... Eric Faulhaber
03:09 PM Feature #1687 (New): remove frames which are completely scoped to dead code
Eric Faulhaber
03:08 PM Feature #1686: ensure frame definitions properly account for formatting information in otherwise ...
Dead code can have an effect on frame formatting (e.g., format string processing and width calcs for @ base fields) b... Eric Faulhaber
03:07 PM Feature #1686 (New): ensure frame definitions properly account for formatting information in othe...
Eric Faulhaber
02:47 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
> Don't make any changes to the line termination processing. I'll create a separate task for that and we will work it... Eugenie Lyzenko
02:43 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Don't make any changes to the line termination processing. I'll create a separate task for that and we will work it ... Greg Shah
10:52 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
> Please prepare the full set of changes needed to get the results you have so far. Make sure that the final result i... Eugenie Lyzenko
10:51 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
> I still need the answer to this question. What line termination characters are placed in the output files today?
...
Eugenie Lyzenko
09:27 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Making the Windows file system case-sensitive is not an option.
It is clear that we have to rework our name conver...
Greg Shah
09:23 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
... Greg Shah
08:47 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Further investigation shows the following:
1. We can set the NTFS in Windows XP 64-bit to be case sensitive. And i...
Eugenie Lyzenko
02:38 PM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
Please do add a new Bug issue along with a full testcase, screen shots and any other recreate/description of the prob... Greg Shah
10:35 AM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
Greg,
There is a remainder brws runtime issue which I think should be documented and solved later on. Currently, ...
Constantin Asofiei
08:54 AM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
Finished cleaning up all files from the update, I'm reconverting using current staging and I'm going to do regression... Constantin Asofiei
02:30 PM Feature #1685: log all dead/unreachable code decisions
The log should record whether the result is missing because it was determined to be unreachable (and why). Eric Faulhaber
02:29 PM Feature #1685 (New): log all dead/unreachable code decisions
Eric Faulhaber
02:28 PM Feature #1684: variable definitions made in unreachable code actually still exist and can be used...
This is tougher in cases where there is a message statement or format_phrase var definition because there are other s... Eric Faulhaber
02:27 PM Feature #1684 (New): variable definitions made in unreachable code actually still exist and can b...
Eric Faulhaber
02:25 PM Feature #1683: rewrite unreachable processing to run in a loop (and/or using ascent rules) to det...
The issue is that if all contents of a particular IF block turn out to be unreachable BUT the IF *is* reachable, then... Eric Faulhaber
02:21 PM Feature #1683 (New): rewrite unreachable processing to run in a loop (and/or using ascent rules) ...
Eric Faulhaber
02:06 PM Feature #1682: IF/ELSE unreachable processing needs to promote THEN/ELSE child nodes into enclosi...
This can be single statements (e.g. even "blocks" like REPEAT) or complex groups (any case of a simple DO block). In... Eric Faulhaber
02:05 PM Feature #1682 (New): IF/ELSE unreachable processing needs to promote THEN/ELSE child nodes into e...
Eric Faulhaber
02:01 PM Feature #1681: convert "for each foo: i = i + 1. end." to something like RecordBuffer.count(fooDMO)
Some other forms would be possible too, taking a where clause to allow a count of all records matching given criteria... Eric Faulhaber
01:57 PM Feature #1681 (New): convert "for each foo: i = i + 1. end." to something like RecordBuffer.count...
Eric Faulhaber
01:56 PM Feature #1680: convert "for each foo: delete foo. end." into a simpler form
The idiom of looping through a table and deleting all records in that table is fairly common for older, temp-table co... Eric Faulhaber
01:28 PM Feature #1680 (New): convert "for each foo: delete foo. end." into a simpler form
Eric Faulhaber
01:25 PM Feature #1679 (New): remove concatenation of empty strings
Eric Faulhaber
01:24 PM Feature #1678: rollup/simplify/remove dead code usually caused by preprocessor substitutions
Often 4GL preprocessing directives/substitutions will expand to bloated code which converts to something more complic... Eric Faulhaber
01:12 PM Feature #1678 (New): rollup/simplify/remove dead code usually caused by preprocessor substitutions
Eric Faulhaber
12:18 PM Feature #1677: deeper analysis of IF/CASE and other condition expressions
For example, a logical variable that is initialized or assigned false and then is never otherwise changed (or passed ... Eric Faulhaber
12:17 PM Feature #1677 (New): deeper analysis of IF/CASE and other condition expressions
Eric Faulhaber
12:11 PM Feature #1676 (New): remove conditional expressions that always evaluate true or false
Eric Faulhaber
12:11 PM Feature #1675 (New): remove unreferenced streams, frames, buffers, temp-tables
Eric Faulhaber
09:46 AM Feature #1531 (Review): update the "Techniques for Integrating Java Code into Reconverted 4GL Cod...
Constantin Asofiei
09:45 AM Feature #1530 (Review): update the "Other Customization" chapter of the Conversion Handbook to ad...
Constantin Asofiei
09:45 AM Feature #1529 (Review): move customer_specific_conversion.rules into p2j/rules/conversion/ and im...
Constantin Asofiei
01:15 AM Feature #1674: remove unreferenced, non-shared variables
Check for any node that has a refid to the var def, but there are cases that are not real source code references so t... Eric Faulhaber
01:13 AM Feature #1674 (New): remove unreferenced, non-shared variables
Eric Faulhaber

10/21/2012

09:36 AM Feature #1519: report improvements
Refine reports that are too broad today. For example, reports such as "potential sockets usage" include language sta... Greg Shah
09:34 AM Feature #1519: report improvements
Add specific reports for:
* dynamic/unspecified EXTENT usage
* EXTENT parameter usage
* detect when the same HANDLE...
Greg Shah

10/19/2012

09:58 AM Feature #1604 (New): enhance name conversion to support malformed frame names and labels
Greg Shah
09:58 AM Feature #1603 (New): enhance name conversion to support internal procedure names that contain a '...
Greg Shah
09:51 AM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
Running the tests in 4GL showed the following:
# entire DISPLAY columns... clause is optional. If it is missing, "s...
Constantin Asofiei
08:42 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Another viewpoint to the naming issue. Theoretically the NTFS is case-sensitive. In XP we can turn this feature on ac... Eugenie Lyzenko

10/18/2012

05:11 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
The conversion has been completed in Windows. But the compilation can not be performed due to the following name gene... Eugenie Lyzenko
12:10 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Greg, some considerations about names
> ... But good Java names CANNOT contain hyphens. But we get away with camel...
Eugenie Lyzenko
10:30 AM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
Regarding your questions in update 5 above:
> 1. By "conversion for the pilot project broke with the update" you m...
Eric Faulhaber
04:32 AM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
I've found the problem, it was caused by the uast/progress.g changes related to "optional column_spec clause" for a d... Constantin Asofiei

10/17/2012

09:53 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
The root cause for src\syman\train2\rst01.p issue has been found. Take a look at pattern/customer_specific_annotation... Eugenie Lyzenko
09:52 AM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
Constantin Asofiei wrote:
> Greg/Eric,
>
> A few questions and findings:
> 1. By "conversion for the pilot proje...
Constantin Asofiei
09:38 AM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
Greg/Eric,
A few questions and findings:
1. By "conversion for the pilot project broke with the update" you mean ...
Constantin Asofiei
04:55 AM Feature #1579 (WIP): review and merge 12/2011 conversion fixes into main P2J code base, regressio...
Constantin Asofiei

10/16/2012

07:07 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
> I understand. I can see that some people would want the converted code to have the proper Windows line termination ... Eugenie Lyzenko
05:31 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
... Greg Shah
05:31 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
... Greg Shah
05:28 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
... Greg Shah
05:27 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
In regard to the case insensitive filename problem in Windows:... Greg Shah
05:14 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
In regards to the exception, this 4GL code:
h = query q:handle.
brws:query in frame fRoster = h.
/*h...
Greg Shah
12:17 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
The news/more findings from Windows conversion process.
I have searched the results for syman/train2/rst01.p conve...
Eugenie Lyzenko
05:01 PM Feature #1520 (Closed): design gap analysis approach
Greg Shah
05:01 PM Feature #1520: design gap analysis approach
1. Should this be inclusive or exclusive?
- inclusive means that we define exactly what is supported and by defaul...
Greg Shah
02:40 PM Feature #1520 (WIP): design gap analysis approach
Greg Shah
10:27 AM Feature #1530: update the "Other Customization" chapter of the Conversion Handbook to add a refer...
The changed other_customization.odt file is in bazaar. Constantin Asofiei
10:25 AM Feature #1529: move customer_specific_conversion.rules into p2j/rules/conversion/ and improve/ref...
Sent final updates for review (for both P2J and TIMCO projects). The other_customization.odt and managing_changes.od... Constantin Asofiei
10:22 AM Feature #1531: update the "Techniques for Integrating Java Code into Reconverted 4GL Code" chapte...
The changes are in bazaar. Constantin Asofiei

10/15/2012

12:31 PM Feature #1531 (WIP): update the "Techniques for Integrating Java Code into Reconverted 4GL Code" ...
Constantin Asofiei
12:30 PM Feature #1530 (WIP): update the "Other Customization" chapter of the Conversion Handbook to add a...
Constantin Asofiei
09:21 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
The following line of code causes the exception generated, file train2/rst01.p.cache Line 1409:9
...
brws:quer...
Eugenie Lyzenko
08:49 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
The new set of issues is related to the file separator difference between Linux(/) and Windows(\) inside the conversi... Eugenie Lyzenko

10/12/2012

05:13 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
OK. The Windows conversion is in progress.
For now the known issues are:
1. The maximum heap size I can request o...
Eugenie Lyzenko
04:25 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
I agree, the truncation problem does appear to happen on staging too, so that is just a bug that already exists.
G...
Greg Shah
03:32 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
The news.
I have converted another MAJIC build. The source is from staging + "New" rule set and helper update. The...
Eugenie Lyzenko
07:00 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Guys,
The problem with
> compile_jasper:
> [jrc] Compiling 1 report design files.
> File : /home/eugenie/timco_...
Eugenie Lyzenko
05:32 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Another very interesting finding. Take a look at staging build on lightning. The files
src/syman/adp/adpchkls.p.lexe...
Eugenie Lyzenko
04:58 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Constantin, Greg,
Strange thing I have got while converting staging sources:
Conversion has been finished but the...
Eugenie Lyzenko
04:29 PM Bug #1589: during parsing the .lexer file is sometimes arbitrarily truncated
This behavior can be seen by:
1. Make an exact copy of a conversion project (duplicate the entire directory tree)....
Greg Shah
04:26 PM Bug #1589 (New): during parsing the .lexer file is sometimes arbitrarily truncated
Greg Shah

10/11/2012

07:15 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
OK. Eugenie Lyzenko
05:48 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Those versions of the code (from 2009 and 2010) are much too old to be useful. Please rebuild your local environment ... Greg Shah
04:58 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Another question. Trying to run conversion in Windows I have the following message:
D:\timco_win>CMD.EXE /C ""C:\Prog...
Eugenie Lyzenko
04:52 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
> Where did you get these?
In my current timco/src subdirectory:
eugenie@cyborg64:~/timco/src> ls -l *.zip
-rw-r...
Eugenie Lyzenko
04:48 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
... Greg Shah
04:30 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
The previous message is updated with customer_libs directrory instruction. And I have checked all created log files a... Eugenie Lyzenko
04:21 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
> Do you have 2 completely independent project installations? With 2 completely separate P2J installations?
Yes, the...
Eugenie Lyzenko
02:34 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
I didn't mean that the command line environment itself was a problem (although it is possible). I meant that in gene... Greg Shah
11:15 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
> The .lexer file is truncated at [01386:003] and there is nothing after that?
Yes, this file finished at [01386:0...
Eugenie Lyzenko
10:59 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
OK, these are some strange results.... Greg Shah
09:10 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
One more note.
> Since the comparisons are just about the differences in src/aero/timco/majic/
These directorie...
Eugenie Lyzenko
09:02 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
> Please show examples of both.
Here is the src/syman/adp/adpout0.p.lexer
The Old MAJIC conversion with "classi...
Eugenie Lyzenko
11:08 PM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
The following is the text of an email I sent to Greg regarding one of the fixes, which had to do with schema parsing ... Eric Faulhaber
11:06 PM Feature #1579: review and merge 12/2011 conversion fixes into main P2J code base, regression test...
In December 2011, Greg and I made a number of fixes to P2J to enable early work on a large customer project (updates ... Eric Faulhaber
10:33 PM Feature #1579 (Closed): review and merge 12/2011 conversion fixes into main P2J code base, regres...
Eric Faulhaber

10/10/2012

07:39 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
... Greg Shah
07:06 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
OK.
BTW, I have faced the strange issue. I did run two conversions in Linux. The both was OK. Then I have compared...
Eugenie Lyzenko
06:49 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Since the comparisons are just about the differences in src/aero/timco/majic/, the amount of code is actually not so ... Greg Shah
06:27 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Greg,
OK. I'm running the conversions. The difference reports will be here. But what is the place to upload result...
Eugenie Lyzenko
05:16 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Please report on the status of the 2 testing activities:
1. Old P2J majic conversion on Linux vs new P2J majic con...
Greg Shah
06:44 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Understood. Then you need to put the cfg files for MAJIC in a separate update. Constantin Asofiei
05:21 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Constantin,
This was not mistake. I have added the config files for TIMCO conversion under Linux/Windows. This is ...
Eugenie Lyzenko
03:36 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Eugenie,
Please remove the cfg/ folder from the root of your update. Except this, the update looks OK.
Constantin Asofiei

10/09/2012

11:45 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Eugenie,
For 2 - as you change a file, if the current year is different than the one in the copyright area, you ne...
Constantin Asofiei
10:06 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Constantin,
1. OK.
2. I do not understand. Why this special update need this modification? Do we need every file ...
Eugenie Lyzenko
05:57 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Eugenie,
Please address the following:
1. the p2j.cfg.xml you sent is for Windows OS. Please leave the p2j.cfg.xml ...
Constantin Asofiei

10/08/2012

05:41 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
OK.
The files to be changed to run conversion on Windows.
Rules:
p2j/rules/annotations/annotations.xml
p2j/rule...
Eugenie Lyzenko
04:04 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Don't apply the changes to staging or CVS yet. Please do the following:
1. Send the changes to Constantin (and co...
Greg Shah
03:49 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
The changes are tested and prepared. Do we need them to be applied to the current P2J build? Note we still need to ma... Eugenie Lyzenko
09:20 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Please do use the quoteReplacement() for all of the 2nd parameter cases. That is exactly what that code is meant to ... Greg Shah

10/05/2012

04:42 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Greg, Constantin,
I've performed a bit more testing and found we can use both fixupRegex() and quoteReplacement() ...
Eugenie Lyzenko
10:21 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Constantin,
Yes, the call
replaceAll("\.", quoteReplacement(fileSep))
does work. So I applied fixupRegex() and q...
Eugenie Lyzenko
06:26 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
Eugenie, please try the following call in the conversion rules:
replaceAll("\.", quoteReplacement(fileSep))
I sus...
Constantin Asofiei
09:42 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Preliminary results:
1. Substitution replaceAll(fileSep, ".") with replaceAll(fixupRegex(fileSep), ".") works fine.
...
Eugenie Lyzenko

10/04/2012

01:25 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
... Greg Shah
01:10 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Constantin,
There are no such elements in our rule files as second parameter for replaceAll(): "\\" as the file se...
Eugenie Lyzenko
12:48 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Please prepare the minimum set of changes needed to resolve all the known problems. Add a helper as needed to Common... Greg Shah
12:45 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Greg,
I've done a little more testing in why it abends in the first place and it looks like calls like this:
<pre...
Constantin Asofiei
12:01 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
After thinking more about this, I realize that my idea about adding a getFileSepRegex() is not a full solution. The ... Greg Shah
11:45 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
I think this would be a more appropriate solution.
OK. I'll look into this.
> > Is it mandatory to use replaceA...
Eugenie Lyzenko
08:01 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
... Greg Shah

10/03/2012

07:32 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Further investigations and testing shows the only real issue we have converting on Windows is the replaceAll call wit... Eugenie Lyzenko

10/01/2012

12:16 PM Bug #1574: broken report links when they target very long filenames
From ECF:
I've noticed that some detail reports with really long names create links with longer names than the act...
Greg Shah
12:14 PM Bug #1574 (Closed): broken report links when they target very long filenames
Greg Shah

09/30/2012

03:01 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Now we have the promes.p converted. The main issue is the Windows file separator char: "\" and some calls that uses t... Eugenie Lyzenko

09/28/2012

04:35 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Eugenie, a question. Are you sure that the following:
<annotation datatype="java.lang.String" key="path" value="co...
Eugenie Lyzenko
02:55 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
Eugenie, a question. Are you sure that the following:... Constantin Asofiei
02:37 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
There is still issue with p2o generation I guess. Consider the following:
In Linux we have the following line:
...
Eugenie Lyzenko
02:18 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
I think real problem here is how windows JRE handles regexps... especially cases when special regexp characters need... Constantin Asofiei
01:41 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
The backslash issue is the real problem. Now we have stopped in the other place on the generating DDL stage:
28.09.2...
Eugenie Lyzenko
12:12 PM Feature #1565: test the full conversion process on Windows and document all problems that are found
The main difference at conversion stage is the primes.p.ast files. For example the following lines are missed in Win3... Eugenie Lyzenko
11:58 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
The resulting files primes.p.schema have difference:
The Windows version does not have the entries like this:
<an...
Eugenie Lyzenko
11:55 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
The resulting files:
primes.p.cache, primes.p.dict, primes.p.lexer, primes.p.parser
are the same for both Linux...
Eugenie Lyzenko
11:50 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
The schema conversion has the difference:
Win32 version does not have any peerid entries like below:
<annotation da...
Eugenie Lyzenko
11:46 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
For some reason, on a Windows machine, any escaped value in a regexp needs two backslashes, as in:
package.replaceAl...
Constantin Asofiei
11:43 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
The conversion from *.df to *.dict is performing without the problems. The results are the same for Linux and Win32 e... Eugenie Lyzenko
10:54 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
The conversion log file:
------------------------------------------------------------------------------
P2J Convers...
Eugenie Lyzenko
10:43 AM Feature #1565: test the full conversion process on Windows and document all problems that are found
The java P2J classes are compiled without problems with ANT 170 and Java 160_u35. To be able to start the conversion ... Eugenie Lyzenko
11:48 AM Feature #1529 (WIP): move customer_specific_conversion.rules into p2j/rules/conversion/ and impro...
Constantin Asofiei
 

Also available in: Atom