bugGnash - The GNU Flash player - Bugs: bug #42395, No respons from panopticlick site...

 
 

bug #42395: No respons from panopticlick site when gnash is activated

Submitted by:  Jean Daux <jeandaux>
Submitted on:  Tue 20 May 2014 07:19:59 PM UTC  
 
Category: pluginSeverity: 3 - Normal
Release: NoneStatus: Fixed
Privacy: PublicAssigned to: Sandro Santilli <strk>
Open/Closed: Closed

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

(Jump to the original submission Jump to the original submission)

Mon 30 Jan 2017 04:37:53 PM UTC, comment #32:

A bug for an XFAILED is still good to have

Sandro Santilli <strk>
Project MemberIn charge of this item.
Sat 28 Jan 2017 05:29:36 PM UTC, comment #31:

As the slash-colon GetVariable() test is now added and checked, this bug could be considered as fixed.

Question: Is the one XFAILED test alone warrant another bug report? Or just leaving it as XFAILED is enough?

Gnash: 0.8.11dev (git 36028f4 28-Jan-2016 07:09:30 GMT)
Flash Player: 11.2.203.491 (NPAPI binary)
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Mon 23 Jan 2017 04:39:46 PM UTC, comment #30:

See patch #9234 for an automated version of `getvariable-slashcolon.zip` test.

As soon as the patch is applied in the mainline, this bug could be
marked as fixed; I will try to file the problem about XFAILED test
as a separate entry.

Gnash: 0.8.11dev (patched against git 2b3bded 21-Jul-2016)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Mon 15 Feb 2016 10:48:15 AM UTC, comment #29:

Sorry, I'm taking it back. The fingerprint test completes and fingerprint table is printed. I just forgot to install the updated code.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Mon 15 Feb 2016 10:41:53 AM UTC, comment #28:

NOTE: after applying patch #8909 (as of commit 051aa9c34b69e1a0a1d2d75e3cf1db07fcea4006) the fingerprint test on panopticlick.eff.org still does not complete on my system.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 10 Feb 2016 04:23:12 PM UTC, comment #27:

I have made a patch which wires plugin's `GetVariable()` function to
Gnash's implementation of ActionGetVariable instruction: see patch #8908.

After applied the patch, you'd see that `fontlist.html` test is now showing
the expected result (empty string instead of `null`):

Note (as a reminder): The empty result is due to `TextField.getFontList()` being unimplemented.

`getvariable-slashcolon.html` test also showing a mostly-correct result:

And EFF Panopticlick would now properly showing the fingerprint table too.
(Screenshot: file #36301) Also, you'd see that "System Fonts" listing is empty,
which is expected, as Gnash's `TextField.getFontList()` is unimplemented.

Gnash: 0.8.11dev (patched against git 435d3e9 6-Feb-2016) NPAPI
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Wed 10 Feb 2016 02:56:34 PM UTC, comment #26:

You can use "xcheck*" macros to commit a test before it passes.
The testing framework would then let you know whenever the test is fixed by code (reporting XPASS, unexpected success, and returning with an error code).

Just in case you want to provide the test before working on the fix.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Wed 10 Feb 2016 02:38:26 PM UTC, comment #25:

I have done some experiment regarding the format of variable path,
and found that it looks very similar to ones used internally in
ActionScript's ActionGetVariable instruction.

Based on the experiment, I have made a test SWF/HTML file (via SWFTools's
swfc) which tries to access variable in root MovieClip, sub-MovieClip and
nested-MovieClip using `GetVariable()` plugin function with slash-colon
variable path.

This is text output of `getvariable-slashcolon.html` under browser with Flash Player:

You'd see that all tests were passed.

This is text output of `getvariable-slashcolon.html` under browser with current Gnash:

You'd see that all tests were failed except the one with bare variable name.

Test SWF, souce code, HTML container, screenshots, logs, and container-player
communication dump is attached as `getvariable-slashcolon.zip`.

Side note: I haven't created a plausible EBNF definition of the path yet;
the slash-colon part is quite straightforward, but it is complicated
when dot is in the mix.

Gnash: 0.8.11dev (git 435d3e9 6-Feb-2016)
Flash Player: 11.2 r202 (11.2.202.491) NPAPI binary
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

(file #36293)

Nutchanon Wetchasit <nachanon>
Tue 09 Feb 2016 03:10:13 PM UTC, comment #24:

Regarding EFF Panopticlick, only problem left in current Gnash's
`GetVariable(variablePath)` implementation is:

  • Gnash didn't resolve variable path in slash-colon notation correctly.

As a reference, this is text output from `fontlist.html` test on browser with current git version Gnash:

Gnash's debug output from the run (verbosity=2 + action error log):

Gnash: 0.8.11dev (git 435d3e9 6-Feb-2016)
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Tue 09 Feb 2016 03:06:24 PM UTC, comment #23:

EFF Panopticlick site have been updated to the new version,
and is (luckily) still affected by this issue; the basic tracking test
is run successfully, but fingerprint test did not finish; when
"Show full results for fingerprinting" was clicked on basic result
page, it just stuck, not giving the fingerprinting result table.

Following is the message from browser's error console:

Gnash: 0.8.11dev (git 435d3e9 6-Feb-2016)
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Sat 19 Dec 2015 04:51:40 PM UTC, comment #22:

For the issue of `GetVariable()` on `undefined` variable under SWF5,
it is now posted separately as bug #46719.

Nutchanon Wetchasit <nachanon>
Sat 19 Dec 2015 08:59:00 AM UTC, comment #21:

For testing against Flash Player, `js2flash-auto-v2.tar.gz`
(file #35071 which corresponds to `extcommtests-runner` bug #37223)
and `extgetvariable-auto.tar.gz` (file #35743 which corresponds to
`extgetvariable_testrunner`), both come with semi-automated HTML testrunner
which could be run and give a list of PASSED/FAILED test on browser with
either Gnash or Adobe Flash Player plugin, as seen in bug #46115.

Including them in the same folder as the corresponding SWF might
address the issue of testing against reference player.

I'm not sure how to automate them further though.

Nutchanon Wetchasit <nachanon>
Sat 19 Dec 2015 08:03:00 AM UTC, comment #20:

Patch #8835 is now in the master branch. I'm a bit concerned about not seeing an easy way to verify test correctness against the proprietary player, if you can think of a way to make that easy it would be helpful.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Sat 19 Dec 2015 06:05:23 AM UTC, comment #19:

Integrated version of `extgetvariable-auto.tar.gz` is now included,
see patch #8835.

I also re-checked the testability of bug #45840, I was wrong. The SWF5 issue
do interfere, as bug #45840 relies on one of the check that gives XFAIL
on SWF5. The testrunner log output is different though:

Output from `testrun.log` when failed because of bug #45840 itself:

Output from `testrun.log` when failed because of the forementioned SWF5 issue:

Gnash: 0.8.11dev (patched against git c11ec51 18-Dec-2015)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Fri 18 Dec 2015 02:25:13 PM UTC, comment #18:

As tools may be unavailable at build time, keeping tests dependent on different tools separated allows for easily enabling/disabling a whole directory based on availability of the tools.

For this reason, I suggest you make separate test runners for the separately created tests.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Fri 18 Dec 2015 02:21:51 PM UTC, comment #17:

@strk:
Regarding the newline fix, no change was needed in the test. Thanks.

Anyway, if one automated test runner needs an SWF that is built using
multiple tools, which folder on Gnash testsuite it is supposed to be in?

The GetVariable() return type test (`extgetvariable-auto.tar.gz`) was
originally intended to be built with libming's makeswf. But the next test on
GetVariable() slash-dot-colon path notation requires a nested MovieClip,
which needs SWFTools's SWFC tool.

I was considering to port the GetVariable() return type test to SWFC.
But I'd like to know which is preferred between:

  • combining those tests together (as they test the same function)? or..
  • make separate test runners (as they use different tool)?
Nutchanon Wetchasit <nachanon>
Fri 18 Dec 2015 02:17:40 PM UTC, comment #16:

I have found some behavior discrepancy in GetVarible() return type test
(`extgetvariable-auto.zip`) under SWF5, regarding unassigned and
assigned-undefined variable (reference player returned those as
empty string instead of a string "undefined"). So, some of the tests
would be marked as XFAIL on that SWF version.

In any case, this issue does not affect testability of bug #45840.

Adobe Flash Player: 11.2 r202 (11.2.202.491) NPAPI binary
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Tue 15 Dec 2015 07:26:06 AM UTC, comment #15:

I've pushed your patch for #46155, let me know if you need to change anything in this testcase in order to use the fix.

Sandro Santilli <strk>
Project MemberIn charge of this item.
Mon 14 Dec 2015 05:29:00 PM UTC, comment #14:

I have made an automated (but non-integrated) version of `getvariable-v3.html`
test, using host container emulation approach similar to `extcommtests-runner`
except that it does the end-of-test signature check at the beginning to avoid
race condition, and does not wait for Gnash to terminate; the test runner will
terminate Gnash when it got all the results.

The automated test (including HTML-based manual test runner) is attached as
`extgetvariable-auto.zip`.

It is currently giving `PASSED` output, but the test requires very long time
to run (around 1.5 minute) and might show some intermittent failure, due to
bug #46115 (container communication missing newlines) making the test runner
rely on read timeout provision on every test it perform.

If bug #46115 is fixed, test time would be reduced to around 1.5 sec.

Gnash: 0.8.11dev (git 95763ce 8-Dec-2015)
System: Debian GNU/Linux 7.0 Wheezy i386

(file #35743)

Nutchanon Wetchasit <nachanon>
Thu 24 Sep 2015 03:48:58 PM UTC, comment #13:

The attached `getvariable-v3.zip` is an improved version of `getvariable.zip` test;
includes function variable check, undeclared V.S. unassigned V.S. `=undefined` distinction
(as in bug #45840), and custom `Object.toString()` check.

Current git version of Gnash now run this test correctly.

Gnash: 0.8.11dev (git f0f66ce 23-Sep-2015) NPAPI
Adobe Flash Player: 11.2 r202 (11.2.202.491) NPAPI binary
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

(file #34974)

Nutchanon Wetchasit <nachanon>
Fri 28 Aug 2015 01:25:51 PM UTC, comment #12:

For the limitation that caused Gnash's `GetVariable()` to return `null` object
when encountered a variable with value `undefined`, it is specific to
an unassigned variable declared on the timeline.

Now submitted as a separate issue: bug #45840.

Nutchanon Wetchasit <nachanon>
Tue 25 Aug 2015 05:56:34 PM UTC, comment #11:

In commit f341372f201dc995d2c893a8e06670f673058897 I sligthly improved the scriptable-test.html file (still not automated and not so easy to setup).

Sandro Santilli <strk>
Project MemberIn charge of this item.
Tue 25 Aug 2015 05:25:25 PM UTC, comment #10:

array from getFontList was pushed.
Please see plugin/npapi/scriptable-test.html and other test files under that dir which may help with writing tests (not sure which if any of those is automated, we'd better have automated ones).

Sandro Santilli <strk>
Project MemberIn charge of this item.
Tue 25 Aug 2015 04:13:37 PM UTC, comment #9:

For the issue of `TextField.getFontList()` being unimplemented, currently
the method returns `undefined`, which would still cause an error in
Panopticlick code (as it was passed to JavaScript as `null`).

Changing `TextField.getFontList()` to return an empty Array
instead of `undefined` (but still emit `UNIMPLEMENTED` log message) would be
an easiest way fix errors in Panopticlick and possibly other site
that tries to use this feature, without actually implementing
the whole functionality.

Patch included (2 of 2), see patch #8723 comment 2

Gnash: 0.8.11dev (patched against git e04f9e2 24-Aug-2015, on top of patch #8721)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Mon 24 Aug 2015 08:23:46 AM UTC, comment #8:

For the problem of `TextField.getFontList()` not being declared properly.
I've checked around and found that the error was rooted from
`this` pointer check done at the start of `textfield_getFontList()` function
in `libcore/asobj/TextField_as.cpp`.

The check shouldn't be there as `TextField.getFontList()` is a static method;
`this` pointer inside it is not supposed to be a valid Object instance.

Patch included (1 of 2, see patch #8723), to remove this check.

After applying the patch and run `fontlist.swf` test, ActionScript error on
method call is now gone and `UNIMPLEMENTED` message is now visible:

Gnash: 0.8.11dev (patched against git 88f86a3 19-Aug-2015, on top of patch #8721)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Fri 21 Aug 2015 03:26:32 PM UTC, comment #7:

Patch included (partially fixes this bug), see patch #8721.

This patch fixes following issues:

  • Gnash's `GetVariable()` interface passed values in their original type rather than string.
  • Gnash didn't pass some variable types like Infinity Number, NaN Number, Array, and Object through `GetVariable()` properly (and crashed).

After applied the patch, running `getvariable.html` on browser with Gnash results in this output:
+verbose+
Flash's string_variable: type=string, value=Hello!
Flash's integer_variable: type=string, value=1234
Flash's float_variable: type=string, value=1234.5678
Flash's infinite_variable: type=string, value=Infinity
Flash's neginfinite_variable: type=string, value=-Infinity
Flash's nan_variable: type=string, value=NaN
Flash's boolean_variable: type=string, value=true
Flash's undefined_variable: type=object, value=null
Flash's nonexistent_variable: type=object, value=null
Flash's null_variable: type=string, value=null
Flash's array_variable: type=string, value=The,quick,brown,fox,jumps,over,the,lazy,dog
Flash's object_variable: type=string, value=[object Object]
-verbose-

You'd see that there's no crash, and result is nearly identical to Adobe Flash.
The exception is an undefined variable case, which gives an object `null`
instead of a string "undefined" due to Gnash's limitation.

Gnash: 0.8.11dev (patched against git 88f86a3 19-Aug-2015) NPAPI
Adobe Flash Player: 11.2 r202 (11.2.202.491) NPAPI binary
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Fri 21 Aug 2015 02:08:56 PM UTC, comment #6:

These are list of problems in Gnash that affects EFF Panopticlick
as far as I have tested:

Problems in Gnash's `GetVariable(variablePath)` interface:

  • Gnash doesn't interpret `variablePath` in slash-colon notation correctly.
  • Gnash's `GetVariable()` interface passes values in their original type rather than string.
  • Gnash doesn't pass some variable types like Infinity Number, NaN Number, Array, and Object through `GetVariable()` properly (and crashes).

Problems in Gnash's `TextField` class:

  • `TextField.getFontList()` is not defined properly as `static`.
  • `TextField.getFontList()` is not implemented.

Gnash: 0.8.11dev (git 88f86a3 19-Aug-2015)
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Fri 21 Aug 2015 11:17:27 AM UTC, comment #5:

I found that if I changed `fontlist.as` (in fontlist test case) to
the following code; using a slightly more convoluted way of calling the
supposedly-static TextField.getFontList() function to silence ActionScript error:

Although the resulting font list in Gnash log output is still `undefined`,
the ActionScript error of function call is gone, and an interesting
message appeared:

This shows that Gnash didn't implement `TextField.getFontList()` and didn't
properly declare it as a static method; hence the function call complication.

Side note: this code also works with Adobe Flash Player.

Gnash: 0.8.11dev (git 88f86a3 19-Aug-2015)
Adobe Flash Player: 11.2 r202 (11.2.202.491) standalone binary
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Thu 20 Aug 2015 04:49:16 PM UTC, comment #4:

For the problem of data marshalling, I've created a test Flash/HTML file
(using libming's makeswf again) to demonstrate how variables of various type
got translated via `GetVariable(variablePath)` call. This test is done
without slash-colon notation.

When running `getvariable.html` on browser with Adobe Flash Player:

You'd see that all values are properly passed to JavaScript in string form.
The only exception is nonexistent variable, which is passed as `null`.

When running `getvariable.html` on browser current Gnash 0.8.11dev git:

You'd see that values are returned using original types,
+/-Infinity, NaN, undefined, and Array are not passed properly,
then plugin crashed.

Note: generic Object type will also result in the same crash (and same
`type=function, value=[object NPObject JS wrapper class]` output)
if the corresponding JavaScript code had been run before Array's one.

Test Flash/HTML file, source code, build script, full text outputs,
and screenshots of both cases are attached (getvariable.zip).

Gnash: 0.8.11dev (git 88f86a3 19-Aug-2015) NPAPI
Adobe Flash Player: 11.2 r202 (11.2.202.491) NPAPI binary
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

(file #34682)

Nutchanon Wetchasit <nachanon>
Thu 20 Aug 2015 12:42:25 PM UTC, comment #3:

I've created HTML/Flash file (using libming's makeswf) to emulate what
Panopticlick's Flash file do, by assigning Array return value from
`TextField.getFontList()` to a variable named `fontlist` inside root movie.
Then access it from JavaScript via `GetVariable()`, using slash-colon variable
path notation.

When running `fontlist.html` on browser with Adobe Flash Player:

After 3 sec, you'd see that font list is passed to JavaScript correctly as String.

When running `fontlist.html` on browser with current Gnash 0.8.11dev git:

After 3 sec, you'd see that the value passed to JavaScript is `null` instead of font list string.

This is what appeared in Gnash debug log:

Test Flash/HTML file, source code, build script, full text output,
full debug logs and screenshots of both cases are attached (fontlist.zip).

Gnash: 0.8.11dev (git 88f86a3 19-Aug-2015) NPAPI
Adobe Flash Player: 11.2 r202 (11.2.202.491) NPAPI binary
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

(file #34681)

Nutchanon Wetchasit <nachanon>
Thu 20 Aug 2015 12:15:11 PM UTC, comment #2:

I've looked more closely, and I found that Panopticlick's Flash file is
not really using ExternalInterface, but uses the old-school plugin-provided
`GetVariable(variablePath)` facility, which fetch value from Flash variable
as String, regardless of variable's actual type within Flash.

In Panopticlick case, the variable in question is an Array named `user_fonts`
in root movie, accessed using `GetVariable("/:user_fonts")` from JavaScript.
The content of `user_fonts` is a value returned from `TextField.getFontList()`
static function call.

Gnash seems to have several problem with this:

  • Gnash didn't resolve variable path in slash-colon notation correctly.
  • Gnash didn't pass some variable types (like Infinity Number, NaN Number, Array, and Object) through GetVariable() properly.
  • Calling `TextField.getFontList()` under Gnash somehow caused ActionScript error (and return `undefined`).

First and third problem caused `null` to be returned to JavaScript,
second problem in Array/Object case caused Gnash plugin to crash.

Gnash: 0.8.11dev (git 88f86a3 19-Aug-2015) NPAPI
Adobe Flash Player: 11.2 r202 (11.2.202.491) NPAPI binary
Browser: Iceweasel 10.0.12 (debian)
System: Debian GNU/Linux 7.0 Wheezy i386

Nutchanon Wetchasit <nachanon>
Sun 09 Aug 2015 02:56:28 PM UTC, comment #1:

As far as I know, EFF Panopticlick uses Flash (if available) to detect
installed fonts, and requires JavaScript calling into Flash to retrieve
font list as a long comma-separated string.

Gnash has a problem with JavaScript calling Flash function,
and it caused the test to fail silently due to `null` return value.

See bug #37223 (JavaScript-to-Flash ExternalInterface problem) for details.

Flash file URL (Flash 7): https://panopticlick.eff.org/resources/fonts2.swf
Panopticlick test script: https://panopticlick.eff.org/resources/fetch_whorls.js

Nutchanon Wetchasit <nachanon>
Tue 20 May 2014 07:19:59 PM UTC, original submission:

I just install Debian 7.5 wheezy. IceWeasel comes with gnash 0.8.11dev preinstalled.

I try to access the panopticlick site (https://panopticlick.eff.org/), push the "test me" button, but the only answer I get is a "Please wait...".

If I deactivate Gnash, the answer is correct.

Can you help me with this ?

Jean Daux <jeandaux>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #36301:  panopticlick_gnash0.8.11dev-435d3e9.patched1.png added by nachanon (305KiB - image/png - Screenshot of EFF Panopticlick on browser using Gnash 0.8.11dev git 435d3e9 with patch #8908)
file #36293:  getvariable-slashcolon.zip added by nachanon (23KiB - application/zip - GetVariable slash-colon path test Flash file, with HTML container, source code, screenshots and logs)
file #35743:  extgetvariable-auto.tar.gz added by nachanon (17KiB - application/x-gzip - Automated version of `getvariable-v3.html` test case)
file #34974:  getvariable-v3.zip added by nachanon (14KiB - application/zip - Improved GetVariable test Flash file, with source code and reference screenshot)
file #34682:  getvariable.zip added by nachanon (18KiB - application/zip - GetVariable test Flash file, with source code, screenshots and logs)
file #34681:  fontlist.zip added by nachanon (19KiB - application/zip - Test Flash file emulating Panopticlick, with source code, screenshots and logs)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by strk (Posted a comment)
  • -unavailable- added by nachanon (Posted a comment)
  • -unavailable- added by jeandaux (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 11 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Mon 30 Jan 2017 04:37:53 PM UTCstrkStatusReady For Test=>Fixed
      Open/ClosedOpen=>Closed
    Mon 15 Feb 2016 10:48:15 AM UTCstrkCategoryNone=>plugin
      StatusNone=>Ready For Test
      Assigned toNone=>strk
    Wed 10 Feb 2016 04:11:52 PM UTCnachanonAttached File-=>Added panopticlick_gnash0.8.11dev-435d3e9.patched1.png, #36301
    Wed 10 Feb 2016 02:38:26 PM UTCnachanonAttached File-=>Added getvariable-slashcolon.zip, #36293
    Mon 14 Dec 2015 05:29:00 PM UTCnachanonAttached File-=>Added extgetvariable-auto.tar.gz, #35743
    Thu 24 Sep 2015 03:48:58 PM UTCnachanonAttached File-=>Added getvariable-v3.zip, #34974
    Thu 20 Aug 2015 04:49:16 PM UTCnachanonAttached File-=>Added getvariable.zip, #34682
    Thu 20 Aug 2015 12:42:25 PM UTCnachanonAttached File-=>Added fontlist.zip, #34681

    Back to the top


    Powered by Savane 3.1-cleanup1