JFIF$        dd7 

Viewing File: /usr/share/ghostscript/Resource/Init/gs_frsd.ps

% Copyright (C) 2001-2021 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
% implied.
%
% This software is distributed under license and may not be copied,
% modified or distributed except as expressly authorized under the terms
% of the license contained in the file LICENSE in this distribution.
%
% Refer to licensing information at http://www.artifex.com or contact
% Artifex Software, Inc.,  1305 Grant Avenue - Suite 200, Novato,
% CA 94945, U.S.A., +1(415)492-9861, for further information.
%

% Implementation of ReusableStreamDecode filter.
% This file must be loaded after gs_lev2.ps and gs_res.ps.

level2dict begin

% ------ ReusableStreamDecode filter ------ %

/.reusablestreamdecode {	% <source> <dict> .reusablestreamdecode <file>
                                % <source> .reusablestreamdecode <file>
                % Collect the filter parameters.
  dup type /dicttype eq { 2 copy } { dup 0 dict } ifelse
  dup .rsdparams
                % Construct the filter pipeline.
                % The very first filter should use the value of CloseSource
                % from the RSD dictionary; all the others should have
                % CloseSource = true.
                % Stack: source dict filters parms
  2 index /CloseSource .knownget not { //false } if 5 -1 roll
                % Stack: dict filters parms CloseSource source
  0 1 5 index length 1 sub {
    4 index 1 index get
                % Stack: dict filters parms CloseSource source index filtname
    4 index //null eq {
      0 dict
    } {
      4 index 2 index get dup //null eq { pop 0 dict} if
    } ifelse
    3 -1 roll pop exch filter
    exch pop //true exch		% set CloseSource for further filters
  } for
                % If AsyncRead is true, try to create the filter directly.
                % Stack: dict filters parms CloseSource source
  4 index /AsyncRead .knownget not { //false } if {
    1 index { .reusablestream } //.internalstopped exec
  } {
    //null //true
  } ifelse {
    pop
                % No luck.  Read the entire contents of the stream now.
    dup type /filetype ne {
                % Make a stream from a procedure or string data source.
      0 () .subfiledecode
    } if
                % We must allocate the string in the same VM space as its
                % source, since the reusable stream must be allocated there.

    .currentglobal 1 index gcheck .setglobal exch
    currentpacking //false setpacking exch
    2 dict begin /filelen 0 def		% scratch dict for filelen and pos (below).
                % Stack: dict filters parms CloseSource oldglobal oldpacking file
    [ exch {
        dup 40000 string readstring
        /filelen 2 index length filelen add def	% accumulate filelen
        not { exit } if exch
      } loop
      exch pop
    ]
    { filelen string } stopped {	% try allocating a single string
      pop	% couldn't make a string - discard filelen value
    } {
      % transfer the array-of-strings to the single string.
      % stack: ... [() ...] string
      /pos 0 def exch {
        1 index exch pos exch putinterval /pos pos 40000 add def
      } forall
    } ifelse
    % top of stack is either array of strings or one string == stream_data
    end	% done with scratch dict
                        % Stack: dict filters parms CloseSource oldglobal oldpacking stream_data
    3 1 roll setpacking setglobal
                        % Stack: dict filters parms CloseSource stream_data
    1 index .reusablestream
  } if
                % We created the stream successfully: clean up.
  4 { exch pop } repeat
  1 index type /dicttype eq { exch pop } if exch pop
} odef

filterdict /ReusableStreamDecode /.reusablestreamdecode load put

end			% level2dict
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg