IRC Logs

Log of #ghostscript at irc.freenode.net.

Search:
 <<<Back 1 day (to 2015/07/20)20150721 
Robin_Watts chrisl: And another commit that moves that stuff into windows.00:11.12 
henrys wow customer list with dollars for the top ten00:56.51 
mvrhel_laptop blah. will need to talk about some ideas for the names of the icc profile device parameters tomorrow. All my names are a little long. Shortening them makes them very cryptic.05:02.30 
  done for the night05:02.36 
pavan Hi all , how can i get winmd file for mupdf ?05:37.53 
  for my winodws store app05:38.06 
ManDay Hello, I've been trying to do impose different cropboxes on different pages of a pdf in /EndPage. According to pstack, /EndPage is, throughout the main part of the run, only called with stacks 0 0 0 and 2 1 2 ! Can someone explain this? According to p427 of the spec, /EndPage should be called with exactly 2 integers, one of which indicate the number of previous showpage executions (which, I hope, amounts05:56.42 
  to the number of pages)05:56.44 
  Oh, I think I can suspect what's going on. The 2 1 2 is probably indicating device deactivation, which resets the showpage counter05:59.08 
  Why is this happening and how should I cound pages?05:59.26 
coelebs how to convert fonts to outline while creating .eps?05:59.56 
ManDay Anyone here who knows how to get the current page number? I'm despairing over this...06:33.36 
  I tried to keep track of it manually in the userdict, but I seem not to figure out how to use global dictionaries. my combinations of userdict, load and def just produce errors06:34.24 
  I also tried things like systemdict /PageCount get but it also gives me an /undefined error06:34.47 
chrisl ManDay: I would guess that the PDF(s) you are processing have non-standard page sizes, and thus the PDF interpreter does a setpagedevice for each page, thus causing the device to be reset - that might be why you see device deactivation happening06:38.54 
  coelebs: if you are using Ghostscript 9.15 or later you should be able to use the command line option "-dNoOutputFonts" to degenerate fonts to outlines in ps2write06:41.05 
ManDay ty chrisl , could you give me a hint as to how to fix my workarroud?06:41.34 
chrisl ManDay: My only suggestion would be to track the page count yourself. I'd have thought keeping the value in userdict would work....06:42.38 
ManDay My "manual counting pages" looked like an initial userdict begin 0 \MyCount def end and then userdict \MyCount get ... in the /EndPage06:43.11 
  But I get an /undefined error when I try to to get /MyCount06:43.22 
  / not \06:43.35 
chrisl I guess there much be a save/restore happening somewhere in ther06:43.48 
ManDay chrisl: I didn't even want to store anything. just reading it out the page number without incrementing it already produced the error06:44.16 
  i.e. userdit /MyCount get gives an error06:44.26 
chrisl Well, if you haven't defined it, you will get an error - because it's undefined06:44.51 
ManDay chrisl: But I did define it, as I said userdict begin 0 /MyCount def end06:45.17 
  Here is the code:06:45.20 
chrisl You just said "I didn't even want to store anything. just reading it out"06:45.41 
ManDay http://dpaste.com/0HYHV5M06:46.17 
  chrisl: Yes, but initially I stored it, of course06:46.26 
  I mean I'm not incrementing it even, yet06:46.33 
chrisl Your parameters are the wrong way round. You're defining a key of '0' with the value /MyCount06:47.38 
  "userdict begin /MyCount 0 def end"06:48.24 
ManDay oh man, how silly of me06:49.05 
  thanks06:49.07 
chrisl ManDay: But it would probably be neater to use the "known" operator, so you handle everything in the EndPage proc06:49.41 
ManDay neater? i don't think so. initializing the variable outside of endpage sounds reasonable i think06:50.18 
chrisl I tend to think self contained is neater.....06:50.38 
ManDay chrisl: Could you have another look? It seems to ignore my incremening the variable. The second pstack (delimited by ###) at the end of beginpage clearly shows /MyCount 1 on the stack but when I load it in the next pass I get 0 back again: http://dpaste.com/17GC9TD07:08.08 
chrisl ManDay: you don't ever save the new value back to the dictionary07:10.33 
ManDay But doesn't store on l300 do that?07:10.55 
  I've also tried to replace store by def, but that didn't change anything07:11.05 
chrisl Possibly. I consider it better practice to be explicit about which dictionary a key/value gets placed in. Also, I don't see where you actually increment the value......07:13.31 
  FWIW, my preference would be have the entire get value, increment and store self contained at the beginning of the EndPage proc.07:16.03 
ManDay i increment it right above where it says 1 add07:20.31 
  anyway, the pstack between ### clearly confirms i have /MyCount 1 on the stack when I call store07:20.55 
  Could you tell me what you mean by be explicit about which dict its get placed it?07:21.12 
  I thought the begin ... store end is the only possible way to modify the user dict07:21.29 
  (and it worked for the initialization)07:21.35 
chrisl Well, "store" searches the dictionary stack for a dictionary containing the specified key, and replaces the value in that dictionary. "def" for example, defines the key/value in the *current* dictionary07:22.27 
  As I said before, there may be a save/restore happening causing the value in userdict to be set back to it's pre-save value07:23.28 
  ManDay: you can probably use your own dictionary stored in userdict in global VM to get around the save/restore messing with your value(s)07:27.18 
ManDay chrisl: sorry, where did you say that? What do you mean by save/restore happening causing a reset?07:28.54 
chrisl I made that comment at 07:43 and save/restore is explained in the PLRM07:30.09 
ManDay oh i think you are right07:35.03 
  I've just checked and the store/def DOES work and retain its value within the EndPage07:35.25 
  but as soon as we get into the next EndPage, it's reset again...07:35.35 
chrisl So, by making your own dictionary in global VM, you'll avoid the restore problem07:36.08 
ManDay I don't see how nesting another dictionary in the user dict will help the issue07:36.14 
chrisl *IN GLOBAL VM* is the important part of that07:36.40 
ManDay the userdict is in global VM07:36.51 
chrisl No it ain't07:37.01 
ManDay oops07:37.06 
  i can use just globaldict then07:37.20 
  Yep, that works :-p07:37.44 
chrisl Oh, great - I actually thought that wasn't writable.....07:37.58 
  So, the only thing to be careful of is that you cannot reference anything in local VM from an object in global VM07:38.47 
  So, if you do want to save any other state information in there, and any of that is a composite object (like a dictionary or an array), it also must be in global VM07:39.47 
  integers are fine because they are atomic objects07:40.05 
ManDay Forgive me if I don't understand what this has to do with atomic objects07:40.46 
chrisl What do you mean?07:40.59 
  A dictionary and an array (and a string and a file etc) contain references to other objects, thus their contents can change as a result of a restore. An integer is an atomic object, it does not contain other objects, therefore it does not change with a restore07:43.02 
ManDay ah i see what you mean now07:55.00 
chrisl ManDay: It's not important for what you have right now, but a potential mini-gotcha for the future. I mention it because I've made the mistake of forgetting a few times.......07:56.36 
ManDay thanks chrisl . if you care, the script is http://dpaste.com/1SR101108:08.43 
pipitas Originelles Weihnachtsgeschenk für Geeks, Nerds + Mathe-Freaks schon heute bestellen: https://www.kickstarter.com/projects/fbz/knityak-custom-mathematical-knit-scarves . Fabienne braucht noch 89 Schal-Bestellungen in 57 Stunden, und ihr Kickstarter-Projekt war erfolgreich!08:18.19 
  Ooops… sorry. Wrong tab.08:18.45 
Robin_Watts chrisl: Morning09:11.59 
chrisl morning09:12.06 
Robin_Watts Various commits on robin/master09:12.24 
  I now have GhostPDL.sln and co in "windows"09:12.47 
  And I have 5 projects; All, ghostpcl, ghostpdl, ghostscript and ghostxps09:13.06 
chrisl The All project commit is wrong09:13.26 
Robin_Watts In order to make All work, I had to add some targets to the makefile... ah, ok, what's wrong with it?09:13.39 
chrisl Well, first, having two "all" targets in makefiles is bad09:13.58 
Robin_Watts oops. Did I do that? 09:14.15 
chrisl Well, you added an all target when there already is one09:14.31 
Robin_Watts Where is the other one defined? Let me grep.09:15.00 
chrisl gs.mak09:15.49 
  Otherwise, how would the make invocation have worked before?09:16.20 
  Also, what you've got will break the build if the pcl and xps sources aren't available09:16.58 
  The alldebug, all-memento-target and all-profile-target are somewhat redundant09:17.50 
  And I don't see why the "all" project contains references to loads of files, but not all the files09:19.19 
Robin_Watts chrisl: I just pushed a fix for the all project to remove all the files from it.09:19.47 
chrisl But why does it reference any files at all? It's purely something to make the builds work09:20.51 
Robin_Watts chrisl: As I say, with my new fix it now does not reference any files.09:21.14 
  I made 'All.vcproj' by copying and modifying ghostscript.vcproj, and I forgot to remove the files.09:21.42 
  If makefile targets are redundant, then I will happily remove them.09:22.17 
  I convinced myself last night that there is no way we can do a proper 'all' build using just Visual Studio dependencies.09:22.53 
chrisl This approach was specifically to *avoid* using VS dependencies09:23.43 
  Previously we just recursively called nmake with the appropriate flags and the existing "all" target - I figured we'd continue to do that09:24.07 
Robin_Watts chrisl: Ok, sorry, I'm getting confused here.09:24.29 
  Your plan is to have an 'All' project in VS that when invoked, will just do an nmake call on an 'all' target ?09:25.08 
chrisl Yes09:25.15 
Robin_Watts Ok, that sounds like exactly what I was aiming for.09:25.29 
  So it sounds like we were headed to the same place, and I just got the implementation wrong.09:25.51 
chrisl And since "all" is the default target, we don't need to have it explicitly on the command line09:25.51 
Robin_Watts chrisl: Right.09:26.03 
  So I can happily remove the 'all' target, and the calls on that.09:26.21 
chrisl So, I have now concluded that Visual Studio (2005 at least) is one of the 5 most evil things on the planet........09:26.34 
Robin_Watts now tell me why alldebug, all-memento-target and all-profile-target are redundant...09:26.46 
chrisl Tell me why they are needed?09:27.06 
Robin_Watts Ah. Is alldebug, effectively the same as 'debug' ?09:27.25 
chrisl Yes09:27.31 
Robin_Watts Gotcha. I knew there was something I was missing in my understanding.09:27.43 
  OK, Let me revise the commit.09:27.50 
chrisl BTW, all these problems with the project dependencies being still there, the configurations being messed up, and the nmake invocation being wrong.... I fixed (almost?) all of them yesterday morning, and for some reason VS didn't save my changes. It saved *something* because the .sln and .vcproj files changed, but not everything I'd done09:30.01 
  Also, I renamed the "test" folder to be "hidden" and marked it as hidden, and VS didn't save those changes either. It properly pisses me off!09:31.19 
Robin_Watts chrisl: I think you need to close the solution to force it to save.09:34.19 
chrisl Robin_Watts: There is an explicit "Save .sln" in the file menu which I used *and* closed down VS09:35.10 
Robin_Watts So, how do we solve the "it won't build if we only have the gs sources" problem?09:37.38 
chrisl If you use the existing "all" target, that is solved already09:38.02 
Robin_Watts The existing all target did not work for me.09:38.20 
  but maybe that was finger trouble.09:38.30 
chrisl I just built both release and debug on the command line, so the make end of things should work09:39.44 
Robin_Watts chrisl: So the makefiles cope with the sources being missing?09:41.01 
chrisl Yes09:41.10 
  Robin_Watts: but there was a problem with the targets being incorrectly set, I updated that yesterday09:41.22 
Robin_Watts If the makefiles cope, then why won't my solution code?09:41.53 
chrisl The targets you added explicitly referenced the targets for pcl and xps09:42.32 
  So, the existing all target uses the macro "PCL_XPS_TARGETS" and that is set based on whether the respective sources are available - if they are not, then "PCL_XPS_TARGETS" is just empty09:45.10 
Robin_Watts I see.09:45.20 
  So, do you have a fixed version of the makefiles?09:45.30 
  solution, sorry.09:45.41 
chrisl No, my changes were lost - and I only realised when you mentioned your problems yesterday09:46.21 
  By that time you were fiddling with it, so I thought it better to avoid clashes09:46.45 
Robin_Watts OK, let me tidy this up, and then you can critique it again.09:46.50 
chrisl But if you pull from golden, you should get the makefile fix09:47.16 
Robin_Watts will do that.09:47.30 
  Are ghostscript-ufst and ghostscript_rt.vcxproj supposed to be there ?09:48.01 
  Just not linked into the solution?09:48.13 
chrisl Yes09:48.16 
  They probably should be updated, though09:48.35 
  As things stand, they will likely end up trying to build all the products and, particularly ghostscript_rt.vcxproj probably won't work for anything other than Ghostcript09:49.32 
  The winrt project, at least, should explicitly use the "gs" target.09:52.31 
Robin_Watts Ok, updated versions on robin/master09:57.49 
  I've updated those so they should have moved properly into the windows dir.09:58.02 
  but I haven't tweaked the usage of targets etc.09:58.11 
chrisl Okay, I'll pull those over.... give me a minute10:00.28 
  410:00.30 
  Robin_Watts: The other thing is, I specifically didn't bother with individual profile targets as I figured we don't need profile builds *that* often, so build everything on the occasions we do need it wouldn't be a huge pain - but I did want to solicit other opinions on that10:08.31 
Robin_Watts 'individual profile targets' ?10:11.12 
chrisl gs-profile, gpcl6-profile, gxps-profile10:11.30 
Robin_Watts For consistency it would be nice for those to all be there, I feel.10:11.48 
chrisl Okay, I'm quite happy to do that10:12.26 
  Robin_Watts: I think the All project commit is now okay. I'm still wary about moving the files without soliciting wider opinions10:15.23 
Robin_Watts chrisl: Did you see Michaels comments last night?10:15.56 
  He said (basically) "ew, the solution/projects are in the root".10:16.15 
  but yes, we should bring it up at the meeting.10:16.31 
chrisl Well, they always have been for the Ghostscript release, so......10:16.33 
Robin_Watts chrisl: The single gs project file, was yes.10:16.48 
chrisl Actually the three project files.....10:17.08 
Robin_Watts oh, ufst and ? _rt ?10:18.20 
chrisl Yeh10:18.27 
Robin_Watts Had there been 3 when I made it originally, they might not have been in the root :)10:18.45 
chrisl And, as I said, I'd really wanted the "All" project hidden :-(10:21.43 
  Robin_Watts: so, if you want to push the commits up to and including the "All" project one, that's fine with me10:24.56 
Robin_Watts chrisl: OK.10:33.18 
  done.10:33.49 
chrisl Cool. I can't imagine anyone objecting to putting the VS files in their own directory, so hopefully that can go in later, too10:34.28 
Robin_Watts runs for a bit.10:34.50 
henrys chrisl is the man of the week! we might have other monikors for him in a few days.14:30.47 
  chrisl: is the cluster stuff resolved.14:31.15 
  ?14:31.18 
chrisl henrys: I don't know for sure, but it does appear to be working now.....14:31.35 
  We'll need the word from marcosw to be sure14:31.47 
marcosw morning14:32.37 
henrys possibly naive question for marcosw -- this big testing run we do before release. Why doesn't that just run continuosly in the background. Presumably we can fix bugs easier if you find them closer to when they were committed?14:32.55 
Robin_Watts Well, the cluster results seem reasonable.14:33.39 
henrys some news that Miles talked a bit with Tor and he said he's be back early but didn't specify exactly when, I know I told Robin_Watts but not sure about others.14:34.10 
chrisl henrys: AIUI, it's run weekly - hence the "weekly regression report" emails14:34.42 
marcosw henrys: we do. the reason we do a final test before release is that there are usually last minute commits. we could just wait a week after the last commit and that would run all the tests in the backgorund14:34.55 
rayjj chrisl: that's what I thought as well14:35.01 
henrys chrisl: oh sorry I thought you were doing something larger before the release.14:35.14 
  okay nvm14:35.23 
chrisl henrys: the pre-release testing is, at least partly, so we don't have to freeze master during the release process14:36.52 
henrys Should we talk about gproof? Robin_Watts is going on vacation and the deadline is drawing near, but I can't think of much to say beyond the obvious.14:37.07 
Robin_Watts henrys: When is the deadline?14:37.26 
henrys Robin_Watts: it's for the chicago show 2nd week of september14:37.52 
Robin_Watts The mupdf changes are (all except for the last few tweaks) committed.14:38.04 
chrisl I am rapidly coming to the conclusion that building gs for android will be nothing more than minor enhancements to Robin's "hacky" solution......14:38.21 
Robin_Watts The gs stuff is updated on top of Chris's new branch.14:38.31 
mvrhel_laptop What do we want to call the device parameter for setting the post rendering ICC profile which will be used by the gsproof device to create the "proof" RGB 14:38.55 
Robin_Watts I could probably disable the gprf device from the default build and then commit the device to gs.14:39.09 
  ProofingProfile ?14:39.33 
mvrhel_laptop we already have one of those...14:39.39 
Robin_Watts GSProofProfile14:39.46 
  PostRenderProfile ?14:40.06 
henrys I didn't follow that, are you adding some CM to mupdf for that mvrhel_laptop ?14:40.13 
Robin_Watts henrys: No, this is within gs.14:40.28 
mvrhel_laptop henrys: no gs will be doing some post rendering cm in the device code14:40.36 
  PostRenderICCProfile was what I was thinking, to go with the other profile names14:41.00 
henrys mvrhel_laptop: oh great it was beginning to sound ambitious for September14:41.03 
mvrhel_laptop all of which end in ICCProfile14:41.12 
Robin_Watts Sounds reasonable then.14:41.21 
mvrhel_laptop Robin_Watts: for now we will just have the one14:41.36 
henrys so the big thing this week is to hammer on chrisl's build14:41.37 
chrisl henrys, rayjj: we also wanted to ask everyone: Robin_Watts, mvrhel_laptop and myself have a preference for moving the Visual Studio solution/project files out of the repo root directory and into a "windows" directory, but I was a little wary about doing so without checking with at least rayjj14:41.43 
henrys if you guys can do all the different targets that you use that would be useful.14:41.54 
  chrisl: that's the way it's usually done14:42.35 
chrisl henrys: up until now, Ghostscript has had the project file(s) in the root directory of the release archive14:43.14 
Robin_Watts (GhostPDL has not, but GhostScript has)14:43.28 
henrys chrisl: not for me ;-)14:43.30 
rayjj chrisl: fine with me14:43.42 
henrys chrisl: I always use the win32 directory in ghostpdl to build stuff14:43.56 
rayjj chrisl: the autogen.sh is still in the root, though, right ?14:44.17 
chrisl rayjj: yes14:44.24 
  henrys: that doesn't exist in Ghostscript release archives14:44.29 
mvrhel_laptop a windows directory would be great14:44.55 
chrisl As I said, I felt it was right, but also felt it best to check - and make sure everyone will be aware14:45.04 
Robin_Watts chrisl: Shall I push that then?14:45.23 
rayjj chrisl: so windows build stuff get bumped down and linux stuff doesn't ? 14:45.25 
chrisl Robin_Watts: yes, I think so14:45.37 
henrys chrisl: and presumably all the release scripts have been updated?14:45.52 
chrisl rayjj: yes, just because that's conventionally how it is14:45.59 
  henrys: I haven't updated the commercial release script yet. It's on my list14:46.16 
  But everything else *should* be okay14:46.31 
Robin_Watts chrisl: Crap. conflict city when I pulled in the latest changes from golden. Will resolve them.14:46.41 
rayjj chrisl: but it would be hard to decide what to call the linux build directory since it is used for all unix like platforms. I like having windows tucked away, however14:46.50 
chrisl Robin_Watts: strange, I only tweaked the makefiles.....14:47.17 
Robin_Watts chrisl: No, you changed the projects too.14:47.48 
chrisl Oh, thought you had that change earlier - sorry14:48.11 
Robin_Watts no worries. Not a big deal.14:48.22 
henrys the other thing I had for the meeting is the bugs we're now at 1014:48.27 
  which sets of alarms at the home office14:48.41 
  s/of/off14:48.47 
  I have X11 that I need to check in with hintak about and another P1 which I'm about to mark Later unless something amazing happens14:49.58 
  rayjj: I thought we agree the performance drop could be dispensed with quickly?14:50.39 
mvrhel_laptop 696101 is an interesting one14:51.45 
marcosw I wasn't sure who to assign 101 to.14:52.25 
chrisl mvrhel_laptop: that's probably one any of us could tackle14:52.27 
henrys mvrhel_laptop: chrisl ?14:52.48 
chrisl It seems to me we should fix the calling code rather than post-process the mode string.....14:53.07 
  Sure, punt it to me14:53.16 
henrys and fredross-perry, were you able to identify a few mupdf problems you can work on as time is available?14:53.58 
chrisl Bug #696018: everything I read about that suggests a bug in the MSVC run-time, but nothing really solid about the problem :-(14:54.22 
fredross-perry In yesterday’s duscussion we thought I’d look at the android viewer parts of gsproof.14:54.41 
Robin_Watts henrys: I've passed the android side of the gproof stuff over to fred.14:54.41 
  That should keep him busy :)14:54.51 
  There are some other mupdf Android UI bugs out there too.14:55.50 
henrys fredross-perry, Robin_Watts cool! Normally we do a project and a few bugs on the side but you are part time so I think that's enough14:55.50 
fredross-perry mvrhel_laptop: question about using a gs shared library in gsview. You’re doing that now, right? Are you installing the library as part of your Windows installer?14:55.50 
  robin: will I find those bugs in bugzilla? Any specific ones you’re interested in?14:56.23 
henrys mvrhel_laptop: your other customer bug looks a little scary14:56.32 
Robin_Watts Like people want to be able to have a way of going 'back' from links they have followed in a document. I am not keen on using the back button for that as the bug requested.14:56.36 
mvrhel_laptop fredross-perry: yes, I am installing the dll14:56.50 
Robin_Watts Also, someone wanted a way of jumping to a specific numbered page.14:56.53 
mvrhel_laptop henrys: yes, that is going to take some time14:57.03 
Robin_Watts You might well be able to make improvements in the UI too. It's just kinda grown the way it is.14:57.15 
fredross-perry yes, i am supposed to look at that too.14:57.29 
chrisl I need to duck out - will check back in a couple of hours.....14:57.31 
henrys mvrhel_laptop: I wonder if we should have a field in bugzilla that says this is going to take a while, which would then show up in the report. That might make the report better for Miles14:58.09 
rayjj has anybody tried to reproduce bug 696018 ? (marcosw)14:58.30 
mvrhel_laptop that would be a good thing14:58.30 
henrys I'm done, anybody else have stuff?14:58.35 
fredross-perry no thanks14:58.47 
Robin_Watts henrys: Not that I can think of.14:58.59 
henrys it's good to know sales@artifex.com is archived on Scott's computer ...16:52.07 
Robin_Watts but not *just* on Scotts computer, right?16:52.28 
henrys Robin_Watts: the first thing I notices when I joined was sales was just an alias for Scott ugh16:53.02 
  Robin_Watts: Ted and I are on it now16:53.24 
Robin_Watts I'm sure Scott has a highly technical backup system arranged.16:53.30 
henrys but I don't get the responses because he doesn't copy me in (forgets). We need a system that records everything that goes in and out16:54.37 
Robin_Watts mvrhel_laptop: I have 3 commits on the master branch of my gs repo.17:21.24 
  The first of those adds the gproof device.17:21.35 
  but doesn't actually add it to the default builds.17:21.49 
  So I think it should be safe to push that now.17:21.57 
  Have you looked over the device enough to be happy to review it?17:22.18 
mvrhel_laptop Robin_Watts: yes. please commit18:07.06 
  I am ready with my commit that changes gs. I will work on the device changes next18:07.29 
jogux henry: the email system emobix uses (fastmail) supports archiving /everything/ (it's a requirement for various kind of businesses). I'm sure Office365 must... but I'm sure they'll want more money :-)18:23.51 
  henry: the alternative would be for sales@ to be a kind of ticketing system CRM type thing.18:24.11 
Robin_Watts mvrhel: Pushed. Thanks.18:25.30 
  The gprf device is on master.18:25.39 
  If you want to build it on windows, you'll need the commit from robin/android_mupdf_gs_so that adds it to msvc.mak18:26.07 
henrys jogux: the problems aren't technical - I'm probably overtepping with this and should stay out of it.18:44.38 
  Robin_Watts: well do we continue with this or drop it?19:00.57 
mvrhel_laptop oh I need to get a chicago ticket too20:49.30 
  looks like things have gotten straightened out on the cluster for me. After running autogen here prior to the push things are fine21:35.26 
  still odd, since the cluster should just run autogen itself21:35.59 
  but with the reorg who know...21:36.19 
  s21:36.21 
  ok. general icc stuff pushed. now onto the gsproof device specific stuff22:34.44 
 Forward 1 day (to 2015/07/22)>>> 
ghostscript.com
Search: