# HG changeset patch # User ryokka # Date 1544607859 -32400 # Node ID df1552e4ac7a29bb0d245698b71394fba54982e4 # Parent 6e03fff298c584f111e0d00b9ebbda4782f3290c add mindmap, some figs diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/.DS_Store Binary file Paper/pic/.DS_Store has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/00.graffle Binary file Paper/pic/00.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/03.graffle Binary file Paper/pic/03.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/06.eps --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/06.eps Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,2719 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%HiResBoundingBox: 0.000000 0.000000 886.000000 652.000000 +%APL_DSC_Encoding: UTF8 +%%Title: (Unknown) +%%Creator: (Unknown) +%%CreationDate: (Unknown) +%%For: (Unknown) +%%DocumentData: Clean7Bit +%%LanguageLevel: 2 +%%Pages: 1 +%%BoundingBox: 0 0 886 652 +%%EndComments +%%BeginProlog +%%BeginFile: cg-pdf.ps +%%Copyright: Copyright 2000-2004 Apple Computer Incorporated. +%%Copyright: All Rights Reserved. +currentpacking true setpacking +/cg_md 141 dict def +cg_md begin +/L3? languagelevel 3 ge def +/bd{bind def}bind def +/ld{load def}bd +/xs{exch store}bd +/xd{exch def}bd +/cmmtx matrix def +mark +/sc/setcolor +/scs/setcolorspace +/dr/defineresource +/fr/findresource +/T/true +/F/false +/d/setdash +/w/setlinewidth +/J/setlinecap +/j/setlinejoin +/M/setmiterlimit +/i/setflat +/rc/rectclip +/rf/rectfill +/rs/rectstroke +/f/fill +/f*/eofill +/sf/selectfont +/s/show +%/as/ashow +/xS/xshow +/yS/yshow +/xyS/xyshow +/S/stroke +/m/moveto +/l/lineto +/c/curveto +/h/closepath +/n/newpath +/q/gsave +/Q/grestore +counttomark 2 idiv +%dup (number of ld's = )print == flush % *** how many +{ld}repeat pop +/SC{ % CSname + /ColorSpace fr scs +}bd +/sopr /setoverprint where{pop/setoverprint}{/pop}ifelse ld +/soprm /setoverprintmode where{pop/setoverprintmode}{/pop}ifelse ld +/cgmtx matrix def +/sdmtx{cgmtx currentmatrix pop}bd +/CM {cgmtx setmatrix}bd % pop the ctm: our gstate ctm on host is now identity +/cm {cmmtx astore CM concat}bd % reset the matrix and then concat +/W{clip newpath}bd +/W*{eoclip newpath}bd + +statusdict begin product end dup (HP) anchorsearch{ + pop pop pop % pop off the search results + true +}{ + pop % previous search result + (hp) anchorsearch{ + pop pop true + }{ + pop false + }ifelse +}ifelse + +{ % HP is the product: we use this method of stroking because of a bug in their clone printers with certain T3 fonts + { + { % charCode Wx Wy + pop pop % charCode + (0)dup 0 4 -1 roll put + F charpath + }cshow + } +}{ + {F charpath} +}ifelse +/cply exch bd +/cps {cply stroke}bd +/pgsave 0 def +/bp{/pgsave save store}bd +/ep{pgsave restore showpage}def % dont' bind +/re{4 2 roll m 1 index 0 rlineto 0 exch rlineto neg 0 rlineto h}bd + +/scrdict 10 dict def +/scrmtx matrix def +/patarray 0 def +/createpat{patarray 3 1 roll put}bd +/makepat{ +scrmtx astore pop +gsave +initgraphics +CM +patarray exch get +scrmtx +makepattern +grestore +setpattern +}bd + +/cg_BeginEPSF{ + userdict save/cg_b4_Inc_state exch put + userdict/cg_endepsf/cg_EndEPSF load put + count userdict/cg_op_count 3 -1 roll put + countdictstack dup array dictstack userdict/cg_dict_array 3 -1 roll put + 3 sub{end}repeat + /showpage {} def + 0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin + 10 setmiterlimit [] 0 setdash newpath + false setstrokeadjust false setoverprint % don't use F +}bd +/cg_EndEPSF{ + countdictstack 3 sub { end } repeat + cg_dict_array 3 1 index length 3 sub getinterval + {begin}forall + count userdict/cg_op_count get sub{pop}repeat + userdict/cg_b4_Inc_state get restore + F setpacking +}bd + +/cg_biproc{currentfile/RunLengthDecode filter}bd +/cg_aiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}bd +/ImageDataSource 0 def +L3?{ + /cg_mibiproc{pop pop/ImageDataSource{cg_biproc}def}bd + /cg_miaiproc{pop pop/ImageDataSource{cg_aiproc}def}bd +}{ + /ImageBandMask 0 def + /ImageBandData 0 def + /cg_mibiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/RunLengthDecode filter dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd + /cg_miaiproc{ + string/ImageBandMask xs + string/ImageBandData xs + /ImageDataSource{[currentfile/ASCII85Decode filter/RunLengthDecode filter + dup ImageBandMask/readstring cvx + /pop cvx dup ImageBandData/readstring cvx/pop cvx]cvx bind}bd + }bd +}ifelse +/imsave 0 def +/BI{save/imsave xd mark}bd +/EI{imsave restore}bd +/ID{ +counttomark 2 idiv +dup 2 add % leave room for imagetype and imagematrix +dict begin +{def} repeat +pop % remove mark +/ImageType 1 def +/ImageMatrix[Width 0 0 Height neg 0 Height]def +currentdict dup/ImageMask known{ImageMask}{F}ifelse exch +% currentdict on stack +L3?{ + dup/MaskedImage known + { + pop + << + /ImageType 3 + /InterleaveType 2 + /DataDict currentdict + /MaskDict + << /ImageType 1 + /Width Width + /Height Height + /ImageMatrix ImageMatrix + /BitsPerComponent 1 + /Decode [0 1] + currentdict/Interpolate known + {/Interpolate Interpolate}if + >> + >> + }if +}if +exch +{imagemask}{image}ifelse +end % pop imagedict from dict stack +}bd + +/cguidfix{statusdict begin mark version end +{cvr}stopped{cleartomark 0}{exch pop}ifelse +2012 lt{dup findfont dup length dict begin +{1 index/FID ne 2 index/UniqueID ne and +{def} {pop pop} ifelse}forall +currentdict end definefont pop +}{pop}ifelse +}bd +/t_array 0 def +/t_i 0 def +/t_c 1 string def +/x_proc{ % x y + exch t_array t_i get add exch moveto + /t_i t_i 1 add store +}bd +/y_proc{ % x y + t_array t_i get add moveto + /t_i t_i 1 add store +}bd +/xy_proc{ + % x y + t_array t_i 2 copy 1 add get 3 1 roll get + 4 -1 roll add 3 1 roll add moveto + /t_i t_i 2 add store +}bd +/sop 0 def % don't bind sop +/cp_proc/x_proc ld % default moveto proc is for xwidths only +/base_charpath % string array +{ + /t_array xs + /t_i 0 def + { % char + t_c 0 3 -1 roll put + currentpoint + t_c cply sop + cp_proc + }forall + /t_array 0 def +}bd +/sop/stroke ld % default sop is stroke. Done here so we don't bind in /base_charpath + +% default sop is stroke +/nop{}def +/xsp/base_charpath ld +/ysp{/cp_proc/y_proc ld base_charpath/cp_proc/x_proc ld}bd +/xysp{/cp_proc/xy_proc ld base_charpath/cp_proc/x_proc ld}bd +/xmp{/sop/nop ld /cp_proc/x_proc ld base_charpath/sop/stroke ld}bd +/ymp{/sop/nop ld /cp_proc/y_proc ld base_charpath/sop/stroke ld}bd +/xymp{/sop/nop ld /cp_proc/xy_proc ld base_charpath/sop/stroke ld}bd +/refnt{ % newname encoding fontname +findfont dup length dict copy dup +/Encoding 4 -1 roll put +definefont pop +}bd +/renmfont{ % newname fontname +findfont dup length dict copy definefont pop +}bd + +L3? dup dup{save exch}if + +% languagelevel2 ONLY code goes here + +/Range 0 def +/DataSource 0 def +/val 0 def +/nRange 0 def +/mulRange 0 def +/d0 0 def +/r0 0 def +/di 0 def +/ri 0 def +/a0 0 def +/a1 0 def +/r1 0 def +/r2 0 def +/dx 0 def +/Nsteps 0 def +/sh3tp 0 def +/ymax 0 def +/ymin 0 def +/xmax 0 def +/xmin 0 def + +/setupFunEval % funDict -- % this calculates and sets up a function dict for evaulation. +{ + begin + /nRange Range length 2 idiv store + /mulRange % precompute the range data needed to map a sample value from the table to a range value + % this data looks like [ range0mul range0min range1mul range1min ... rangeN-1mul rangeN-1min ] + [ + 0 1 nRange 1 sub + { % index + 2 mul/nDim2 xd % 2*dimension# we are dealing with + Range nDim2 get % ymin + Range nDim2 1 add get % ymin ymax + 1 index sub % ymin (ymax-ymin) + % xmin = 0, xmax = 255 (2^bitspersample - 1) + 255 div % ymin (ymax-ymin)/(xmax - xmin) + exch % (ymax-ymin)/(xmax - xmin) ymin + }for + ]store + end +}bd + +/FunEval % val1 fundict -> comp1 comp2 ... compN +{ + begin + % the value passed in is the base index into the table + nRange mul /val xd % compute the actual index to the table + % since there are nRange entries per base index + 0 1 nRange 1 sub + { + dup 2 mul/nDim2 xd % dim + val % base value to use to do our lookup + add DataSource exch get % lookedupval + mulRange nDim2 get mul % lookedupval*(ymax-ymin)/(xmax-xmin) + mulRange nDim2 1 add get % lookedupval*(ymax-ymin)/(xmax-xmin) ymin + add % interpolated result + }for % comp1 comp2 ... compN + end +}bd + +/max % a b -> max(a, b) +{ + 2 copy lt + {exch pop}{pop}ifelse +}bd + +/sh2 +{ % emulation of shading type 2. Assumes shading dictionary is top dictionary on the dict stack + /Coords load aload pop % x0 y0 x1 y1 + 3 index 3 index translate % origin is now at beginning point of shading + % x0 y0 x1 y1 + 3 -1 roll sub % x0 x1 y1-y0 + 3 1 roll exch % y1-y0 x1 x0 + sub % y1-y0 x1-x0 + 2 copy + dup mul exch dup mul add sqrt % length of segment between two points + dup + scale + atan % atan (dy/dx) + %dup (rotation angle = )print == + rotate % now line between 0,0 and 1,0 is the line perpendicular to which the axial lines are drawn + + /Function load setupFunEval % may need to setup function dictionary by calling setupFunEval + + % this is now specific to axial shadings. Compute the maximum bounds to fill + clippath {pathbbox}stopped {0 0 0 0}if newpath % x0 y0 x1 y1 + /ymax xs + /xmax xs + /ymin xs + /xmin xs + currentdict/Extend known + { + /Extend load 0 get + { + 0/Function load FunEval sc % evaluate the function to get a color and set it + xmin ymin xmin abs ymax ymin sub rectfill + }if + }if + % paint the rects. The sampling frequency is that of our table + /Nsteps/Function load/Size get 0 get 1 sub store + /dx 1 Nsteps div store + gsave + /di ymax ymin sub store + /Function load + % loop Nsteps + 1 times, incrementing the index by 1 each time + 0 1 Nsteps + { + 1 index FunEval sc + 0 ymin dx di rectfill + dx 0 translate + }for + pop % pop our function + grestore % origin is back to start point + currentdict/Extend known + { + /Extend load 1 get + { + Nsteps/Function load FunEval sc % last element + 1 ymin xmax 1 sub abs ymax ymin sub rectfill + }if + }if +}bd + +/shp % this paints our shape for shading type 3 +{ % x1 r1 x0 r0 - + 4 copy + + % fill interior arc + dup 0 gt{ + 0 exch a1 a0 arc + }{ + pop 0 moveto + }ifelse + + dup 0 gt{ + 0 exch a0 a1 arcn + }{ + pop 0 lineto + }ifelse + + fill + + % fill exterior arc + dup 0 gt{ + 0 exch a0 a1 arc + }{ + pop 0 moveto + }ifelse + + dup 0 gt{ + 0 exch a1 a0 arcn + }{ + pop 0 lineto + }ifelse + + fill +}bd + +/calcmaxs +{ % calculate maximum distance vector from origin to corner points + % of bbox + xmin dup mul ymin dup mul add sqrt % (xmin2 + ymin2) + xmax dup mul ymin dup mul add sqrt % (xmax2 + ymin2) + xmin dup mul ymax dup mul add sqrt % (xmin2 + ymax2) + xmax dup mul ymax dup mul add sqrt % (xmax2 + ymax2) + max max max % maximum value +}bd + +/sh3 +{ % emulation of shading type 3. Assumes shading dictionary is top dictionary on the dict stack + /Coords load aload pop % x0 y0 r1 x1 y1 r2 + 5 index 5 index translate % origin is now at first circle origin + 3 -1 roll 6 -1 roll sub % y0 r1 y1 r2 dx + 3 -1 roll 5 -1 roll sub % r1 r2 dx dy + 2 copy dup mul exch dup mul add sqrt + /dx xs % r1 r2 dx dy + 2 copy 0 ne exch 0 ne or + { + % r1 r2 dx dy + exch atan rotate % we are now rotated so dy is zero and positive values of dx move us as expected + }{ + pop pop + }ifelse + % r1 r2 + /r2 xs + /r1 xs + /Function load + dup/Size get 0 get 1 sub % this is the size of our table minus 1 + /Nsteps xs % at some point we should optimize this better so NSteps is based on needed steps for the device + setupFunEval % may need to setup function dictionary by calling setupFunEval + % determine the case: + % case 0: circle1 inside circle2 + % case 1: circle 2 inside circle 1 + % case 2: r1 = r2 + % case 3: r1 != r2 + dx r2 add r1 lt{ + % circle 2 inside of circle 1 + 0 + }{ + dx r1 add r2 le + { % circle 1 inside of circle 2 + 1 + }{ % circles don't contain each other + r1 r2 eq + { % equal + 2 + }{ % r1 != r2 + 3 + }ifelse + }ifelse + }ifelse + /sh3tp xs % sh3tp has the number of our different cases + clippath {pathbbox}stopped {0 0 0 0}if + newpath % x0 y0 x1 y1 + /ymax xs + /xmax xs + /ymin xs + /xmin xs + + % Arc angle atan( sqrt((dx*dx + dy*dy) - dr*dr), dr) + dx dup mul r2 r1 sub dup mul sub dup 0 gt + { + sqrt r2 r1 sub atan + /a0 exch 180 exch sub store + /a1 a0 neg store + }{ + pop + /a0 0 store + /a1 360 store + }ifelse + + currentdict/Extend known + { + /Extend load 0 get r1 0 gt and % no need to extend if the radius of the first end is 0 + { + 0/Function load FunEval sc % evaluate the function to get a color and set it + % case 0: circle1 inside circle2 + % case 1: circle 2 inside circle 1 + % case 2: circles don't contain each other and r1 == r2 + % case 3: circles don't contain each other and r1 != r2 + { + { % case 0 + dx 0 r1 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill % for the bigger radius we fill everything except our circle + } + { % case 1 + r1 0 gt{0 0 r1 0 360 arc fill}if + } + { % case 2 + % r1 == r2, extend 0 + % r3 = r, x3 = -(abs(minx) + r), x1 = 0 + + % x(i+1) r(i+1) x(i) r(i) shp + 0 r1 xmin abs r1 add neg r1 shp + } + { % case 3 + % no containment, r1 != r2 + + r2 r1 gt{ % the endpoint we are drawing is that with a circle of zero radius + % x(i+1) r(i+1) x(i) r(i) shp + 0 r1 + r1 neg r2 r1 sub div dx mul % this is point of beginning circle + 0 % point of ending circle + shp % takes x(i+1) r(i+1) x(i) r(i) + }{ % the first circle is the bigger of the two + % we find a circle on our line which is outside the bbox in the + % negative direction + % x(i+1) r(i+1) x(i) r(i) shp + 0 r1 calcmaxs % 0 r1 maxs + dup + % calculating xs: (-(maxs+r2)*x2)/(x2-(r1-r2)) + r2 add dx mul dx r1 r2 sub sub div + neg % maxs xs' + exch 1 index % xs' maxs xs' + abs exch sub + shp + }ifelse + } + }sh3tp get exec % execute the extend at beginning proc for our shading type + }if + }if + + % now do the shading + /d0 0 store + /r0 r1 store + /di dx Nsteps div store + /ri r2 r1 sub Nsteps div store + /Function load + 0 1 Nsteps + { % function t(i) + 1 index FunEval sc + d0 di add r0 ri add d0 r0 shp + { + % fill interior arc + d0 0 r0 a1 a0 arc + d0 di add 0 r0 ri add a0 a1 arcn + fill + + % fill exterior arc + d0 0 r0 a0 a1 arc + d0 di add 0 r0 ri add a1 a0 arcn + fill + }pop + + % advance to next + /d0 d0 di add store + /r0 r0 ri add store + }for + pop % pop our function dict + + % handle Extend + currentdict/Extend known + { + /Extend load 1 get r2 0 gt and % no need to extend if the radius of the last end is 0 + { + Nsteps/Function load FunEval sc % last element + % case 0: circle1 inside circle2 + % case 1: circle 2 inside circle 1 + % case 2: circles don't contain each other and r1 == r2 + % case 3: circles don't contain each other and r1 != r2 + { + { + dx 0 r2 0 360 arc fill + } + { + dx 0 r2 360 0 arcn + xmin ymin moveto + xmax ymin lineto + xmax ymax lineto + xmin ymax lineto + xmin ymin lineto + eofill % for the bigger radius we fill everything except our circle + } + { % r1 == r2, extend 1 + % r3 = r, x3 = (abs(xmax) + r), x1 = dx + % x(i+1) r(i+1) x(i) r(i) shp + xmax abs r1 add r1 dx r1 shp + } + { % no containment, r1 != r2 + + r2 r1 gt{ + % we find a circle on our line which is outside the bbox in the + % positive direction + % x(i+1) r(i+1) x(i) r(i) shp + calcmaxs dup % maxs maxs + % calculating xs: ((maxs+r1)*x2)/(x2-(r2-r1)) + r1 add dx mul dx r2 r1 sub sub div % maxs xs + exch 1 index % xs maxs xs + exch sub + dx r2 + shp + }{ % the endpoint we are drawing is that with a circle of zero radius + % x(i+1) r(i+1) x(i) r(i) shp + r1 neg r2 r1 sub div dx mul % this is point of ending circle + 0 % radius of ending circle + dx % point of starting circle + r2 % radius of starting circle + shp + }ifelse + } + } + sh3tp get exec % execute the extend at end proc for our shading type + }if + }if +}bd +/sh % emulation of shfill operator for type 2 and type 3 shadings based on type 0 functions +{ % shadingDict -- + begin + /ShadingType load dup dup 2 eq exch 3 eq or + { % shadingtype + gsave + newpath + /ColorSpace load scs + currentdict/BBox known + { + /BBox load aload pop % llx lly urx ury + 2 index sub % llx lly urx ury-lly + 3 index % llx lly urx ury-lly llx + 3 -1 roll exch sub + exch rectclip + }if + 2 eq + {sh2}{sh3}ifelse + grestore + }{ + % shadingtype + pop + (DEBUG: shading type unimplemented\n)print flush + }ifelse + end +}bd + +% end of language level 2 ONLY code + +{restore}if not dup{save exch}if +% languagelevel3 ONLY code goes here + L3?{ % we do these loads conditionally or else they will fail on a level 2 printer + /sh/shfill ld + /csq/clipsave ld + /csQ/cliprestore ld + }if +{restore}if + +%currentdict dup maxlength exch length sub (number of extra slots in md = )print == flush % *** how many entries are free +end +setpacking +% count 0 ne { pstack(***extras on stack during prolog execution***\n)print flush}if % *** BARK if anything is left on stack +%%EndFile +%%EndProlog +%%BeginSetup +%%EndSetup +%%Page: 1 1 +%%PageBoundingBox: 0 0 886 652 +%%BeginPageSetup +cg_md begin +bp +sdmtx +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4295 0.2318 0.0204 0.3278 0.6722 0.1111 0.1933 0.0960 0.9578 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs1 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ { 1.8008 exp } bind { 1.8008 exp } bind { 1.8008 exp } bind ] def +/MatrixABC [ 0.4295 0.2318 0.0204 0.3278 0.6722 0.1111 0.1933 0.0960 0.9578 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs2 exch/ColorSpace dr pop +[ /CIEBasedABC 4 dict dup begin +/WhitePoint [ 0.9505 1.0000 1.0891 ] def +/DecodeABC [ +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind + +{ 1.0 0.0 3 -1 roll 1 index 1 index le { exch pop} { pop } ifelse + 1 index 1 index ge { exch pop } { pop } ifelse < +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000001010101010101010101010101 +0101010101010101010101010101010101010101010101020202020202020202 +0202020202020202020202020202020202030303030303030303030303030303 +0303030303030304040404040404040404040404040404040404050505050505 +0505050505050505050506060606060606060606060606060607070707070707 +0707070707070708080808080808080808080808090909090909090909090909 +0a0a0a0a0a0a0a0a0a0a0a0b0b0b0b0b0b0b0b0b0b0b0c0c0c0c0c0c0c0c0c0c +0d0d0d0d0d0d0d0d0d0d0e0e0e0e0e0e0e0e0e0f0f0f0f0f0f0f0f0f10101010 +1010101010111111111111111112121212121212121313131313131313141414 +1414141414151515151515151616161616161616171717171717171818181818 +18181919191919191a1a1a1a1a1a1a1b1b1b1b1b1b1c1c1c1c1c1c1c1d1d1d1d +1d1d1e1e1e1e1e1e1f1f1f1f1f1f202020202020212121212121222222222223 +2323232323242424242425252525252526262626262727272727282828282829 +292929292a2a2a2a2a2b2b2b2b2b2c2c2c2c2c2d2d2d2d2d2e2e2e2e2e2f2f2f +2f2f303030303131313131323232323333333333343434343535353535363636 +36373737373838383839393939393a3a3a3a3b3b3b3b3c3c3c3c3d3d3d3d3e3e +3e3e3f3f3f3f4040404041414141424242424343434444444445454545464646 +4647474748484848494949494a4a4a4b4b4b4b4c4c4c4d4d4d4d4e4e4e4f4f4f +4f50505051515151525252535353535454545555555656565657575758585859 +59595a5a5a5a5b5b5b5c5c5c5d5d5d5e5e5e5f5f5f6060606061616162626263 +63636464646565656666666767676868686969696a6a6a6b6b6b6c6c6d6d6d6e +6e6e6f6f6f707070717171727273737374747475757576767677777878787979 +797a7a7b7b7b7c7c7c7d7d7e7e7e7f7f7f808081818182828283838484848585 +86868687878888888989898a8a8b8b8b8c8c8d8d8d8e8e8f8f90909091919292 +9293939494949595969697979798989999999a9a9b9b9c9c9c9d9d9e9e9f9f9f +a0a0a1a1a2a2a3a3a3a4a4a5a5a6a6a6a7a7a8a8a9a9aaaaabababacacadadae +aeafafb0b0b0b1b1b2b2b3b3b4b4b5b5b6b6b6b7b7b8b8b9b9bababbbbbcbcbd +bdbebebebfbfc0c0c1c1c2c2c3c3c4c4c5c5c6c6c7c7c8c8c9c9cacacbcbcccc +cdcdcececfcfd0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7d8d8d9d9dadadbdcdcdd +dddededfdfe0e0e1e1e2e2e3e3e4e4e5e6e6e7e7e8e8e9e9eaeaebebecededee +eeefeff0f0f1f1f2f3f3f4f4f5f5f6f6f7f8f8f9f9fafafbfcfcfdfdfefeffff +> dup length 1 sub 3 -1 roll mul dup dup floor cvi exch ceiling + cvi 3 index exch get 4 -1 roll 3 -1 roll get + dup 3 1 roll sub 3 -1 roll dup floor cvi sub mul add 255 div } bind +] def +/MatrixABC [ 0.4124 0.2126 0.0193 0.3576 0.7151 0.1192 0.1805 0.0722 0.9508 ] def +/RangeLMN [ 0.0 0.9505 0.0 1.0000 0.0 1.0891 ] def +end ] /Cs3 exch/ColorSpace dr pop +%%EndPageSetup +/Cs1 SC +1 1 1 sc +q +0 0 886 652 rc +-423 1152 m +890 1152 l +890 -4 l +-423 -4 l +h +-423 1152 m +f +Q +0.60000002 i +/Cs2 SC +1 1 1 sc +q +0.11275324 592.76953 m +844.05194 651.78351 l +885.4873 59.230465 l +41.5481 0.21648867 l +h +0.11275324 592.76953 m +W +41.747593 0.23043863 m +885.68677 59.244415 l +844.2514 651.79749 l +0.31224689 592.78351 l +h +W +41.747593 0.23043863 m +885.68677 59.244415 l +844.2514 651.79749 l +0.31224689 592.78351 l +h +W +0 0 886 652 rc +41.747593 0.23043863 m +885.68677 59.244415 l +844.2514 651.79749 l +0.31224689 592.78351 l +h +f +1 j +0 0 0 sc +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +92.400002 577.20001 m +99.400002 577.20001 l +S +CM +83.715683 580.64484 m +83.914536 581.39435 83.965485 582.46228 83.868523 583.84894 c +83.791275 584.95361 83.654594 585.83032 83.458473 586.479 c +83.090767 587.68683 82.5205 588.26361 81.74765 588.20959 c +80.974792 588.15552 80.489349 587.48663 80.291313 586.20282 c +80.188332 585.51947 80.175316 584.62769 80.252251 583.52747 c +80.324417 582.49548 80.459396 581.67578 80.657204 581.0683 c +81.028908 579.9339 81.614815 579.39478 82.414955 579.45068 c +83.083244 579.49744 83.516815 579.89545 83.715683 580.64484 c +h +84.305397 587.10699 m +84.826561 586.25262 85.12735 585.25037 85.207779 584.10016 c +85.271042 583.19543 85.189713 582.33319 84.963799 581.51331 c +84.537109 579.97137 83.669136 579.15454 82.359825 579.06299 c +81.464218 579.00037 80.699295 579.35577 80.065018 580.12921 c +79.386017 580.95428 78.994385 582.11237 78.890106 583.60352 c +78.80809 584.77649 78.944374 585.80017 79.298943 586.67474 c +79.777695 587.86401 80.596703 588.49921 81.755989 588.58026 c +82.80162 588.65338 83.651413 588.16229 84.305397 587.10699 c +h +86.074097 579.45294 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 577.20001 m +818 577.20001 l +S +92.400002 524.09998 m +99.400002 524.09998 l +S +CM +78.139099 526.48053 m +78.580132 526.21661 78.914291 526.09271 79.141602 526.10864 c +79.664421 526.1452 80.105164 526.4079 80.463882 526.89661 c +80.822586 527.38538 80.978409 527.96619 80.931358 528.63904 c +80.84903 529.81647 80.162369 530.62054 78.871376 531.05103 c +78.155777 531.28876 77.49794 531.38672 76.897835 531.34479 c +76.797821 531.33777 76.735077 531.33679 76.709587 531.3418 c +76.68412 531.34686 76.651756 531.36865 76.612526 531.40704 c +76.619072 531.44397 76.624886 531.47522 76.629951 531.50073 c +76.635033 531.52618 76.641304 531.55066 76.648819 531.57397 c +77.907486 534.93756 l +80.832962 535.14209 l +80.978447 535.15228 81.089211 535.18518 81.165268 535.24072 c +81.241325 535.29639 81.338234 535.39679 81.455986 535.54205 c +81.571777 535.45422 l +81.128098 534.1554 l +81.11277 534.11322 81.06459 534.08362 80.983559 534.06653 c +80.902512 534.04938 80.81427 534.03754 80.718788 534.03082 c +78.079735 533.84631 l +77.583534 532.61249 l +78.33802 532.53723 78.891975 532.45496 79.245445 532.36542 c +79.827072 532.21423 80.321846 531.96564 80.729805 531.61951 c +81.079697 531.31964 81.352806 530.97443 81.549164 530.58386 c +81.745514 530.19324 81.859406 529.77295 81.890877 529.32281 c +81.961128 528.31818 81.661781 527.45428 80.992798 526.73145 c +80.323822 526.00854 79.441536 525.6087 78.345894 525.5321 c +77.900368 525.50098 77.538193 525.51904 77.259392 525.58636 c +76.794907 525.6955 76.549957 525.93188 76.524529 526.29559 c +76.514992 526.43201 76.555511 526.55481 76.646103 526.66388 c +76.736702 526.77301 76.884285 526.83472 77.088852 526.84906 c +77.347992 526.86719 77.698074 526.74426 78.139099 526.48053 c +h +87.74025 527.69659 m +87.93911 528.44611 87.990059 529.51404 87.893097 530.9007 c +87.815849 532.00537 87.679169 532.88208 87.483047 533.53076 c +87.115341 534.73859 86.545074 535.31537 85.772224 535.26135 c +84.999359 535.20734 84.513931 534.53839 84.31588 533.25458 c +84.212906 532.57123 84.199898 531.67944 84.276833 530.57922 c +84.348991 529.54724 84.483971 528.7276 84.681778 528.12012 c +85.05349 526.98566 85.639389 526.44653 86.439529 526.50244 c +87.107819 526.54919 87.541389 526.9472 87.74025 527.69659 c +h +88.329979 534.15881 m +88.851135 533.30438 89.151924 532.30212 89.232353 531.15192 c +89.295616 530.24719 89.214287 529.38495 88.988373 528.56506 c +88.561684 527.02319 87.69371 526.2063 86.384399 526.11475 c +85.488792 526.05212 84.723869 526.40753 84.089592 527.18097 c +83.410599 528.00604 83.018959 529.16412 82.914688 530.65527 c +82.832664 531.82825 82.968948 532.85193 83.323517 533.7265 c +83.802269 534.91577 84.621277 535.55096 85.780563 535.63202 c +86.826195 535.70514 87.675995 535.21405 88.329979 534.15881 c +h +90.098679 526.5047 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 524.09998 m +818 524.09998 l +S +92.400002 470.95001 m +99.400002 470.95001 l +S +CM +77.473663 481.70621 m +77.476738 481.69501 77.479698 481.66895 77.482559 481.62805 c +78.056686 473.41769 l +78.081169 473.06754 78.189941 472.85132 78.383011 472.76889 c +78.57608 472.68643 78.927826 472.65399 79.438286 472.67136 c +79.451637 472.48041 l +75.605553 472.21149 l +75.591248 472.41608 l +76.139427 472.48187 76.49334 472.58191 76.652962 472.71646 c +76.812592 472.85092 76.878098 473.12277 76.84948 473.53195 c +76.407921 479.84665 l +76.392662 480.06482 76.353775 480.22888 76.291283 480.33871 c +76.228775 480.44852 76.106598 480.4971 75.924751 480.48441 c +75.806549 480.47614 75.655418 480.43246 75.471359 480.35333 c +75.2873 480.2742 75.11599 480.19257 74.957413 480.1084 c +74.944061 480.29932 l +77.357567 481.74951 l +77.4394 481.75525 l +77.459183 481.73376 77.470596 481.71744 77.473663 481.70621 c +h +85.569588 474.26505 m +85.76844 475.01453 85.819389 476.08249 85.722427 477.46909 c +85.64518 478.57379 85.508499 479.4505 85.312378 480.09921 c +84.944672 481.30701 84.374405 481.88382 83.601555 481.82977 c +82.828705 481.77573 82.343262 481.10684 82.145233 479.82291 c +82.042244 479.13965 82.029228 478.24786 82.106163 477.14764 c +82.178322 476.11566 82.313301 475.29599 82.511108 474.68851 c +82.88282 473.55408 83.468727 473.01492 84.26886 473.07089 c +84.937149 473.11761 85.37072 473.51562 85.569588 474.26505 c +h +86.159309 480.7272 m +86.680466 479.87277 86.981255 478.87051 87.061684 477.72034 c +87.124947 476.81564 87.043617 475.95337 86.817711 475.13351 c +86.391014 473.59158 85.523041 472.77475 84.213737 472.6832 c +83.318123 472.62057 82.5532 472.97598 81.918922 473.74942 c +81.239929 474.57446 80.848289 475.73257 80.744019 477.22372 c +80.661995 478.39667 80.798279 479.42035 81.152855 480.29492 c +81.631599 481.48422 82.450607 482.11938 83.609901 482.20047 c +84.655525 482.27359 85.505325 481.78247 86.159309 480.7272 c +h +92.552536 474.75333 m +92.751389 475.50284 92.802338 476.57077 92.705376 477.9574 c +92.628128 479.0621 92.491447 479.93878 92.295326 480.58749 c +91.92762 481.79529 91.357353 482.3721 90.584503 482.31808 c +89.811653 482.26404 89.32621 481.59512 89.128181 480.31119 c +89.025192 479.62796 89.012177 478.73618 89.089111 477.63596 c +89.16127 476.60397 89.296249 475.7843 89.494057 475.17682 c +89.865768 474.04239 90.451675 473.50323 91.251808 473.55917 c +91.920097 473.60593 92.353668 474.00394 92.552536 474.75333 c +h +93.142258 481.21552 m +93.663414 480.36108 93.964203 479.35883 94.044632 478.20862 c +94.107895 477.30392 94.026566 476.44165 93.800659 475.6218 c +93.373962 474.0799 92.505989 473.26306 91.196686 473.17151 c +90.301071 473.10886 89.536148 473.46426 88.901871 474.2377 c +88.222878 475.06274 87.831238 476.22086 87.726967 477.71201 c +87.644943 478.88495 87.781227 479.90866 88.135803 480.78323 c +88.614548 481.9725 89.433556 482.6077 90.59285 482.68875 c +91.638474 482.76187 92.488274 482.27075 93.142258 481.21552 c +h +94.910957 473.56143 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 470.95001 m +818 470.95001 l +S +92.400002 417.85001 m +99.400002 417.85001 l +S +CM +81.177734 428.73557 m +81.180809 428.72437 81.183769 428.6983 81.18663 428.65738 c +81.760757 420.44705 l +81.78524 420.09689 81.894005 419.88065 82.087074 419.79822 c +82.280151 419.71579 82.631897 419.68335 83.142349 419.70071 c +83.155701 419.50977 l +79.309624 419.24081 l +79.295319 419.44543 l +79.843491 419.51123 80.197411 419.61127 80.357033 419.74582 c +80.516663 419.88028 80.582169 420.1521 80.553551 420.56131 c +80.111984 426.87598 l +80.096733 427.09415 80.057838 427.25824 79.995346 427.36804 c +79.932846 427.47787 79.810669 427.52646 79.628822 427.51373 c +79.51062 427.50546 79.359489 427.46182 79.17543 427.38269 c +78.991371 427.30356 78.820061 427.22192 78.661484 427.13776 c +78.648132 427.32867 l +81.06163 428.77887 l +81.143471 428.78461 l +81.163246 428.76312 81.174667 428.74677 81.177734 428.73557 c +h +86.655449 420.56656 m +87.096481 420.3027 87.430634 420.1788 87.657951 420.1947 c +88.180763 420.23126 88.621513 420.49393 88.980225 420.98267 c +89.338936 421.47147 89.494759 422.05225 89.447708 422.7251 c +89.365379 423.90253 88.678711 424.7066 87.387733 425.13708 c +86.672134 425.37485 86.01429 425.47281 85.414185 425.43085 c +85.314163 425.42383 85.251419 425.42285 85.225937 425.42789 c +85.200462 425.43292 85.168106 425.45471 85.128876 425.49307 c +85.135422 425.53003 85.141235 425.56131 85.146309 425.58682 c +85.151375 425.61224 85.157661 425.63675 85.165169 425.66003 c +86.423843 429.02362 l +89.349304 429.22818 l +89.494789 429.23834 89.60556 429.27127 89.681618 429.32681 c +89.757675 429.38245 89.854584 429.48285 89.972351 429.62811 c +90.088127 429.54028 l +89.644447 428.24146 l +89.62912 428.19931 89.58094 428.16968 89.499908 428.15256 c +89.418869 428.13547 89.330612 428.1236 89.235146 428.11691 c +86.596085 427.93237 l +86.099884 426.69855 l +86.85437 426.62329 87.408325 426.54105 87.761795 426.45148 c +88.343414 426.30029 88.838203 426.0517 89.246147 425.7056 c +89.596054 425.40567 89.869171 425.06049 90.065506 424.66995 c +90.261856 424.2793 90.375763 423.85901 90.407234 423.40891 c +90.477486 422.40427 90.178131 421.54037 89.509155 420.81754 c +88.840172 420.0946 87.957886 419.69479 86.862251 419.61819 c +86.416718 419.58704 86.05455 419.6051 85.775742 419.67242 c +85.311264 419.78159 85.066307 420.01797 85.040871 420.38168 c +85.031334 420.51807 85.071861 420.6409 85.16246 420.74997 c +85.253052 420.85907 85.400635 420.92081 85.605209 420.93512 c +85.864342 420.95322 86.214424 420.83035 86.655449 420.56656 c +h +96.256607 421.78268 m +96.45546 422.53217 96.506409 423.60013 96.409447 424.98676 c +96.332199 426.09143 96.195518 426.96814 95.999397 427.61685 c +95.631691 428.82465 95.061424 429.40146 94.288574 429.34741 c +93.515717 429.29337 93.030273 428.62448 92.832237 427.34064 c +92.729256 426.65729 92.71624 425.7655 92.793175 424.66531 c +92.865341 423.63333 93.00032 422.81363 93.198128 422.20615 c +93.569832 421.07172 94.155739 420.53259 94.955879 420.58853 c +95.624168 420.63525 96.057739 421.03326 96.256607 421.78268 c +h +96.846321 428.24484 m +97.367485 427.39041 97.668274 426.38815 97.748703 425.23798 c +97.811966 424.33328 97.730637 423.47101 97.504723 422.65115 c +97.078033 421.10922 96.21006 420.29239 94.900757 420.20084 c +94.005142 420.13821 93.240219 420.49362 92.605942 421.26706 c +91.926941 422.0921 91.535309 423.25021 91.43103 424.74136 c +91.349014 425.91431 91.485298 426.93802 91.839874 427.81256 c +92.318619 429.00186 93.137627 429.63702 94.296913 429.71811 c +95.342545 429.79123 96.192337 429.30011 96.846321 428.24484 c +h +98.615021 420.59079 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 417.85001 m +818 417.85001 l +S +92.400002 364.70001 m +99.400002 364.70001 l +S +CM +80.646729 366.21222 m +82.18985 368.05606 83.230873 369.40344 83.769844 370.25433 c +84.308807 371.10519 84.551422 371.91479 84.497696 372.68311 c +84.450645 373.35596 84.232956 373.8558 83.844627 374.18271 c +83.456284 374.50961 83.009819 374.65543 82.50518 374.62015 c +81.882355 374.5766 81.393631 374.31396 81.038994 373.83234 c +80.842804 373.56732 80.665092 373.16885 80.505844 372.63693 c +80.208328 372.6778 l +80.362511 373.73932 80.697021 374.49249 81.211838 374.93738 c +81.726662 375.38229 82.295471 375.62646 82.918312 375.67001 c +83.686615 375.72375 84.325233 375.52521 84.83416 375.07422 c +85.343102 374.6232 85.62204 374.04776 85.671005 373.34756 c +85.723137 372.60199 85.51651 371.86578 85.051102 371.13885 c +84.585701 370.41193 83.555618 369.10406 81.960808 367.21542 c +85.090866 367.4343 l +85.527306 367.46481 85.830521 367.53854 86.000496 367.65561 c +86.170494 367.77255 86.352715 368.04111 86.547188 368.4613 c +86.730209 368.39188 l +86.106316 366.43631 l +80.6577 366.0553 l +h +91.849205 368.1947 m +92.048058 368.94418 92.099014 370.01215 92.00206 371.39877 c +91.924805 372.50345 91.788116 373.38016 91.592003 374.02887 c +91.224304 375.23666 90.654037 375.81348 89.881172 375.75943 c +89.108322 375.70538 88.622879 375.0365 88.42485 373.75256 c +88.321869 373.06931 88.308846 372.17752 88.38578 371.07733 c +88.457947 370.04535 88.592934 369.22565 88.790741 368.61816 c +89.162437 367.48373 89.748344 366.94461 90.548477 367.00055 c +91.216774 367.04727 91.650352 367.44528 91.849205 368.1947 c +h +92.438927 374.65686 m +92.960091 373.80243 93.260872 372.80017 93.341301 371.64999 c +93.404564 370.7453 93.32325 369.88303 93.097328 369.06317 c +92.670647 367.52124 91.802673 366.70441 90.493362 366.61285 c +89.597755 366.55023 88.832832 366.90564 88.198555 367.67908 c +87.519547 368.50412 87.127914 369.66223 87.023643 371.15338 c +86.941628 372.32632 87.077896 373.35004 87.432472 374.22458 c +87.911232 375.41388 88.73024 376.04907 89.889519 376.13013 c +90.93515 376.20325 91.784943 375.71213 92.438927 374.65686 c +h +98.832153 368.68298 m +99.031006 369.4325 99.081963 370.50043 98.985008 371.88705 c +98.907753 372.99176 98.771065 373.86847 98.574951 374.51715 c +98.207253 375.72495 97.636986 376.30179 96.86412 376.24774 c +96.09127 376.1937 95.605827 375.52481 95.407799 374.24084 c +95.304817 373.55762 95.291794 372.66583 95.368729 371.56561 c +95.440895 370.53363 95.575882 369.71396 95.773689 369.10648 c +96.145386 367.97205 96.731293 367.43289 97.531425 367.48883 c +98.199722 367.53558 98.633301 367.93359 98.832153 368.68298 c +h +99.421875 375.14517 m +99.943039 374.29074 100.24382 373.28848 100.32425 372.13828 c +100.38751 371.23361 100.3062 370.37134 100.08028 369.55148 c +99.653595 368.00955 98.785622 367.19272 97.476311 367.10117 c +96.580704 367.03854 95.815781 367.39395 95.181503 368.16739 c +94.502495 368.99243 94.110863 370.15051 94.006592 371.64169 c +93.924576 372.81461 94.060844 373.83832 94.415421 374.71289 c +94.89418 375.90216 95.713188 376.53735 96.872467 376.61841 c +97.918098 376.69153 98.767891 376.20041 99.421875 375.14517 c +h +101.19057 367.49109 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 364.70001 m +818 364.70001 l +S +92.400002 311.60001 m +99.400002 311.60001 l +S +CM +84.3508 313.24158 m +85.893921 315.08539 86.934944 316.4328 87.473915 317.28366 c +88.012871 318.13455 88.255493 318.94412 88.201759 319.71246 c +88.154709 320.38531 87.937027 320.88516 87.548698 321.21207 c +87.160355 321.53897 86.71389 321.68478 86.209251 321.64948 c +85.586418 321.60593 85.097702 321.34329 84.743065 320.86169 c +84.546867 320.59665 84.369164 320.19818 84.209908 319.66629 c +83.912399 319.70712 l +84.066582 320.76868 84.401085 321.52185 84.915909 321.96674 c +85.430725 322.41165 85.999542 322.65582 86.622383 322.69937 c +87.390686 322.75308 88.029297 322.55457 88.538231 322.10355 c +89.047165 321.65256 89.326111 321.07712 89.375069 320.37692 c +89.427208 319.63135 89.220581 318.89514 88.755173 318.16821 c +88.289764 317.44125 87.259689 316.13342 85.664879 314.24478 c +88.794937 314.46365 l +89.231369 314.49417 89.534584 314.5679 89.704567 314.68494 c +89.874565 314.80188 90.056786 315.07047 90.251251 315.49063 c +90.43428 315.42123 l +89.810387 313.46567 l +84.361771 313.08466 l +h +92.935066 314.49625 m +93.376099 314.23236 93.710266 314.10846 93.937569 314.12436 c +94.460396 314.16092 94.901146 314.42361 95.259857 314.91232 c +95.618561 315.40112 95.774391 315.9819 95.727341 316.65475 c +95.645004 317.83218 94.958344 318.63626 93.667351 319.06674 c +92.951752 319.3045 92.293907 319.40247 91.69381 319.3605 c +91.593796 319.35352 91.531044 319.35251 91.505569 319.35754 c +91.480087 319.36258 91.447723 319.3844 91.408493 319.42273 c +91.415054 319.45969 91.420853 319.49097 91.425926 319.51648 c +91.431007 319.5419 91.437286 319.56641 91.444794 319.58969 c +92.703461 322.95328 l +95.628937 323.15784 l +95.774414 323.16803 95.885178 323.20093 95.96125 323.25647 c +96.0373 323.3121 96.134216 323.41251 96.251968 323.55777 c +96.36776 323.46994 l +95.924065 322.17114 l +95.908737 322.12897 95.860558 322.09933 95.779526 322.08224 c +95.698494 322.06512 95.610237 322.05325 95.514771 322.04657 c +92.875702 321.86203 l +92.379509 320.6282 l +93.133995 320.55295 93.687958 320.4707 94.041412 320.38113 c +94.623047 320.22995 95.117821 319.98135 95.525772 319.63525 c +95.875671 319.33536 96.148788 318.99014 96.345131 318.59961 c +96.541481 318.20895 96.65538 317.78867 96.686859 317.33856 c +96.757111 316.33392 96.457764 315.47003 95.788773 314.74722 c +95.119789 314.02429 94.237503 313.62445 93.141869 313.54785 c +92.696335 313.51669 92.334175 313.53476 92.055359 313.60208 c +91.590881 313.71124 91.345932 313.94763 91.320503 314.31134 c +91.310966 314.44772 91.351486 314.57056 91.442078 314.67963 c +91.532669 314.78873 91.680252 314.85046 91.884834 314.86478 c +92.143967 314.8829 92.494041 314.76001 92.935066 314.49625 c +h +102.53622 315.71234 m +102.73508 316.46182 102.78603 317.52979 102.68907 318.91641 c +102.61182 320.02112 102.47514 320.8978 102.27901 321.54651 c +101.91132 322.7543 101.34106 323.33112 100.56819 323.27707 c +99.795341 323.22305 99.309898 322.55414 99.111862 321.27029 c +99.008888 320.58694 98.995865 319.69519 99.0728 318.59497 c +99.144958 317.56299 99.279945 316.74332 99.477753 316.13583 c +99.849457 315.00137 100.43536 314.46225 101.2355 314.51819 c +101.90379 314.56494 102.33736 314.96295 102.53622 315.71234 c +h +103.12595 322.17453 m +103.6471 321.3201 103.94789 320.31784 104.02832 319.16763 c +104.09158 318.26294 104.01026 317.40067 103.78435 316.58081 c +103.35767 315.03891 102.48969 314.22205 101.18037 314.13049 c +100.28477 314.06787 99.519844 314.42328 98.885567 315.19672 c +98.206566 316.02176 97.814934 317.17987 97.710663 318.67102 c +97.628647 319.84396 97.764915 320.86768 98.119492 321.74222 c +98.598251 322.93152 99.417252 323.56671 100.57654 323.64777 c +101.62217 323.72089 102.47196 323.22977 103.12595 322.17453 c +h +104.89465 314.52045 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 311.60001 m +818 311.60001 l +S +92.400002 258.45001 m +99.400002 258.45001 l +S +CM +89.864975 260.99142 m +90.294525 260.76114 90.652504 260.65594 90.938919 260.67599 c +91.575386 260.72049 92.033173 260.96832 92.312263 261.41959 c +92.59137 261.87076 92.713272 262.34872 92.677986 262.85339 c +92.643974 263.33981 92.489059 263.75842 92.21328 264.10913 c +91.746925 264.70245 91.011406 264.9639 90.006699 264.89362 c +89.947594 264.8895 89.890839 264.88443 89.836449 264.87833 c +89.782051 264.87231 89.718803 264.86218 89.646698 264.8479 c +89.620659 265.02432 l +90.32962 265.33884 90.881287 265.68124 91.275703 266.05148 c +91.670105 266.42169 91.847763 266.88632 91.808655 267.44556 c +91.77401 267.94104 91.582817 268.30688 91.235107 268.54291 c +90.887383 268.77902 90.502129 268.88229 90.07933 268.85275 c +89.579239 268.81778 89.151146 268.60278 88.795013 268.20789 c +88.599876 267.99326 88.396461 267.66837 88.184753 267.23325 c +87.970016 267.26614 l +88.103554 267.96988 88.40361 268.54599 88.870216 268.99435 c +89.33683 269.44269 89.89518 269.68954 90.545296 269.73499 c +91.240852 269.78363 91.791794 269.63028 92.198097 269.27496 c +92.604416 268.91965 92.825058 268.492 92.860031 267.99182 c +92.890862 267.5509 92.762306 267.13531 92.474373 266.74518 c +92.311691 266.52359 92.053024 266.27023 91.698349 265.98511 c +92.147827 265.82916 92.513138 265.63547 92.794296 265.40384 c +93.323219 264.96115 93.613258 264.37384 93.664452 263.64185 c +93.724846 262.77814 93.438263 261.99283 92.80471 261.28613 c +92.171143 260.57941 91.226997 260.18219 89.972252 260.09442 c +89.413063 260.05533 89.015152 260.1109 88.778519 260.26108 c +88.541878 260.41122 88.416885 260.58182 88.403534 260.77277 c +88.395264 260.89096 88.42482 261.0072 88.492203 261.12158 c +88.559586 261.23596 88.677376 261.29904 88.845581 261.31082 c +89.095627 261.32828 89.435417 261.22183 89.864975 260.99142 c +h +99.451775 262.21686 m +99.650627 262.96637 99.701576 264.03433 99.604614 265.42093 c +99.527367 266.52563 99.390686 267.40234 99.194572 268.05103 c +98.826866 269.25882 98.256599 269.83566 97.483742 269.78162 c +96.710892 269.72757 96.225449 269.05869 96.02742 267.77472 c +95.924438 267.09149 95.911415 266.19971 95.98835 265.09949 c +96.060509 264.0675 96.195488 263.24783 96.393295 262.64035 c +96.765007 261.50592 97.350914 260.96677 98.151047 261.02274 c +98.819336 261.06946 99.252907 261.46747 99.451775 262.21686 c +h +100.0415 268.67905 m +100.56266 267.82462 100.86344 266.82236 100.94387 265.67218 c +101.00713 264.76749 100.9258 263.90521 100.6999 263.08536 c +100.27322 261.54343 99.405228 260.72659 98.095924 260.63504 c +97.200325 260.57242 96.435387 260.92783 95.801109 261.70126 c +95.122116 262.52631 94.730484 263.68439 94.626213 265.17557 c +94.544197 266.34848 94.680466 267.37219 95.035042 268.24677 c +95.513802 269.43607 96.332794 270.07123 97.492088 270.15228 c +98.537712 270.2254 99.387512 269.73428 100.0415 268.67905 c +h +106.43472 262.70517 m +106.63358 263.45465 106.68452 264.52261 106.58756 265.90924 c +106.51031 267.01392 106.37363 267.89062 106.17752 268.53934 c +105.80981 269.74713 105.23955 270.32394 104.46669 270.2699 c +103.69384 270.21585 103.2084 269.54697 103.01037 268.26303 c +102.90739 267.57977 102.89436 266.68799 102.9713 265.5878 c +103.04346 264.55582 103.17844 263.73611 103.37624 263.12863 c +103.74796 261.9942 104.33386 261.45508 105.134 261.51102 c +105.80228 261.55774 106.23586 261.95575 106.43472 262.70517 c +h +107.02444 269.16733 m +107.54561 268.3129 107.84639 267.31064 107.92682 266.16046 c +107.99008 265.25577 107.90875 264.39349 107.68285 263.57364 c +107.25616 262.03171 106.38818 261.21487 105.07887 261.12332 c +104.18327 261.0607 103.41833 261.41611 102.78406 262.18954 c +102.10506 263.01459 101.71343 264.1727 101.60916 265.66385 c +101.52715 266.83679 101.66341 267.86047 102.01799 268.73505 c +102.49675 269.92435 103.31574 270.55951 104.47504 270.64059 c +105.52066 270.71371 106.37046 270.2226 107.02444 269.16733 c +h +108.79314 261.51328 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 258.45001 m +818 258.45001 l +S +92.400002 205.35001 m +99.400002 205.35001 l +S +CM +93.569046 208.02078 m +93.998596 207.7905 94.356575 207.6853 94.642982 207.70534 c +95.279449 207.74983 95.737236 207.99768 96.016327 208.44894 c +96.295441 208.90012 96.417343 209.37808 96.38205 209.88275 c +96.348038 210.36916 96.19313 210.78778 95.917343 211.13849 c +95.450989 211.73181 94.715477 211.99324 93.71077 211.92297 c +93.651665 211.91884 93.59491 211.91377 93.54052 211.90767 c +93.486115 211.90166 93.422867 211.89153 93.350769 211.87726 c +93.32473 212.05367 l +94.033684 212.36819 94.585358 212.7106 94.979774 213.08083 c +95.374176 213.45103 95.551826 213.91566 95.512726 214.4749 c +95.478073 214.97038 95.286888 215.33624 94.939178 215.57225 c +94.591454 215.80838 94.2062 215.91165 93.783401 215.8821 c +93.28331 215.84712 92.855217 215.63214 92.499084 215.23723 c +92.30394 215.0226 92.100525 214.69771 91.888824 214.26259 c +91.674088 214.29549 l +91.807625 214.99922 92.107674 215.57535 92.574287 216.0237 c +93.040901 216.47203 93.599251 216.71889 94.249359 216.76434 c +94.944923 216.81299 95.495865 216.65964 95.902168 216.30432 c +96.308487 215.94899 96.529121 215.52135 96.564102 215.02116 c +96.594933 214.58025 96.466377 214.16466 96.178444 213.77452 c +96.015762 213.55293 95.757095 213.29958 95.40242 213.01443 c +95.851891 212.85852 96.217201 212.66483 96.498367 212.43318 c +97.027283 211.99049 97.317329 211.4032 97.368515 210.67119 c +97.428909 209.8075 97.142334 209.02219 96.508781 208.31548 c +95.875214 207.60875 94.931061 207.21153 93.676315 207.12378 c +93.117134 207.08469 92.719215 207.14026 92.48259 207.29042 c +92.245949 207.44058 92.120949 207.61118 92.107597 207.80211 c +92.099335 207.92032 92.128883 208.03656 92.196274 208.15094 c +92.263657 208.26532 92.381447 208.3284 92.549652 208.34015 c +92.79969 208.35764 93.139488 208.25119 93.569046 208.02078 c +h +100.53764 208.5184 m +100.97867 208.25453 101.31283 208.13063 101.54014 208.14653 c +102.06296 208.18309 102.50372 208.44577 102.86242 208.93448 c +103.22112 209.42329 103.37695 210.00409 103.3299 210.67694 c +103.24757 211.85437 102.56091 212.65843 101.26992 213.08891 c +100.55432 213.32668 99.896477 213.42464 99.296371 213.38266 c +99.196358 213.37567 99.133614 213.37469 99.108139 213.37973 c +99.082657 213.38477 99.050293 213.40656 99.011063 213.44492 c +99.017609 213.48186 99.023422 213.51314 99.028496 213.53867 c +99.033569 213.56407 99.039856 213.58858 99.047356 213.61185 c +100.30603 216.97545 l +103.2315 217.18002 l +103.37698 217.19019 103.48775 217.2231 103.5638 217.27864 c +103.63987 217.33427 103.73677 217.43468 103.85454 217.57996 c +103.97031 217.49211 l +103.52663 216.1933 l +103.51131 216.15112 103.46313 216.12149 103.3821 216.1044 c +103.30106 216.08731 103.21281 216.07542 103.11734 216.06874 c +100.47827 215.8842 l +99.982071 214.65039 l +100.73656 214.57513 101.29051 214.49287 101.64398 214.40332 c +102.22561 214.25212 102.72039 214.00352 103.12833 213.65744 c +103.47824 213.35751 103.75136 213.01233 103.9477 212.62178 c +104.14405 212.23112 104.25795 211.81084 104.28943 211.36073 c +104.35968 210.35609 104.06032 209.4922 103.39134 208.76938 c +102.72236 208.04645 101.84007 207.64664 100.74444 207.57002 c +100.2989 207.53886 99.936745 207.55695 99.657928 207.62427 c +99.193451 207.73343 98.948494 207.96982 98.923058 208.33353 c +98.913528 208.46989 98.954048 208.59271 99.044647 208.7018 c +99.135239 208.81088 99.282822 208.87263 99.487404 208.88695 c +99.746529 208.90506 100.09661 208.78218 100.53764 208.5184 c +h +110.13879 209.73451 m +110.33765 210.48401 110.3886 211.55196 110.29163 212.93857 c +110.21439 214.04327 110.07771 214.91998 109.88158 215.56868 c +109.51388 216.77647 108.94361 217.3533 108.17076 217.29926 c +107.39791 217.24521 106.91247 216.57632 106.71444 215.29237 c +106.61146 214.60913 106.59843 213.71735 106.67537 212.61714 c +106.74753 211.58516 106.88251 210.76547 107.08031 210.15799 c +107.45203 209.02356 108.03793 208.48442 108.83807 208.54036 c +109.50636 208.5871 109.93993 208.98511 110.13879 209.73451 c +h +110.72852 216.19669 m +111.24967 215.34225 111.55046 214.34 111.63089 213.1898 c +111.69415 212.28513 111.61282 211.42285 111.38691 210.60298 c +110.96024 209.06107 110.09225 208.24423 108.78294 208.15268 c +107.88734 208.09006 107.12241 208.44545 106.48813 209.2189 c +105.80914 210.04395 105.4175 211.20204 105.31323 212.69321 c +105.23121 213.86613 105.36749 214.88983 105.72206 215.7644 c +106.20081 216.95369 107.01981 217.58887 108.1791 217.66994 c +109.22473 217.74306 110.07453 217.25194 110.72852 216.19669 c +h +112.49722 208.54262 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 205.35001 m +818 205.35001 l +S +92.400002 152.2 m +99.400002 152.2 l +S +CM +98.32 162.27536 m +95.302666 157.30869 l +98.650932 157.54282 l +h +98.671837 163.71161 m +99.319672 163.75691 l +99.74884 157.6196 l +101.17406 157.71925 l +101.23749 156.81227 l +99.812263 156.7126 l +99.974869 154.38719 l +98.890594 154.31137 l +98.727989 156.6368 l +94.800079 156.36212 l +94.736656 157.2691 l +h +106.41333 156.19421 m +106.61218 156.94371 106.66313 158.01166 106.56617 159.39828 c +106.48892 160.50298 106.35224 161.37968 106.15613 162.02838 c +105.78841 163.23618 105.21815 163.813 104.4453 163.75896 c +103.67243 163.70491 103.187 163.03603 102.98898 161.75208 c +102.88599 161.06883 102.87297 160.17705 102.94991 159.07684 c +103.02206 158.04486 103.15704 157.22517 103.35485 156.61769 c +103.72656 155.48326 104.31247 154.94412 105.1126 155.00008 c +105.78089 155.0468 106.21446 155.44481 106.41333 156.19421 c +h +107.00305 162.65639 m +107.52421 161.80196 107.825 160.7997 107.90543 159.64951 c +107.96869 158.74483 107.88736 157.88255 107.66145 157.0627 c +107.23476 155.52077 106.36678 154.70393 105.05747 154.61238 c +104.16187 154.54976 103.39694 154.90517 102.76266 155.6786 c +102.08367 156.50365 101.69203 157.66174 101.58776 159.15291 c +101.50574 160.32584 101.64202 161.34955 101.99659 162.22411 c +102.47534 163.41339 103.29435 164.04857 104.45364 164.12964 c +105.49927 164.20276 106.34907 163.71164 107.00305 162.65639 c +h +113.39628 156.68251 m +113.59513 157.43201 113.64608 158.49995 113.54912 159.88658 c +113.47187 160.99127 113.33519 161.86798 113.13908 162.51668 c +112.77136 163.72447 112.2011 164.3013 111.42825 164.24725 c +110.65538 164.19321 110.16995 163.52432 109.97192 162.24037 c +109.86893 161.55713 109.85592 160.66534 109.93285 159.56514 c +110.00501 158.53316 110.13999 157.71347 110.3378 157.10599 c +110.70951 155.97156 111.29542 155.43242 112.09555 155.48836 c +112.76384 155.5351 113.19741 155.93311 113.39628 156.68251 c +h +113.986 163.14468 m +114.50716 162.29025 114.80795 161.28799 114.88837 160.1378 c +114.95164 159.23312 114.87031 158.37085 114.6444 157.55099 c +114.2177 156.00906 113.34973 155.19223 112.04042 155.10068 c +111.14482 155.03806 110.37989 155.39345 109.74561 156.1669 c +109.06662 156.99194 108.67498 158.15004 108.57071 159.6412 c +108.48869 160.81413 108.62497 161.83783 108.97954 162.7124 c +109.45829 163.90169 110.2773 164.53687 111.43659 164.61794 c +112.48222 164.69106 113.33202 164.19994 113.986 163.14468 c +h +115.7547 155.49062 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 152.2 m +818 152.2 l +S +92.400002 99.099998 m +99.400002 99.099998 l +S +CM +102.02406 109.30471 m +99.006737 104.33801 l +102.355 104.57214 l +h +102.37591 110.74095 m +103.02374 110.78625 l +103.45291 104.64891 l +104.87814 104.74857 l +104.94156 103.84161 l +103.51633 103.74194 l +103.67894 101.41656 l +102.59467 101.34074 l +102.43206 103.66613 l +98.50415 103.39146 l +98.440727 104.29842 l +h +107.49919 102.49574 m +107.94022 102.23191 108.27438 102.10795 108.50169 102.12385 c +109.02451 102.16041 109.46526 102.42307 109.82397 102.91185 c +110.18268 103.40063 110.3385 103.98143 110.29145 104.65428 c +110.20912 105.83171 109.52246 106.63577 108.23146 107.06627 c +107.51586 107.30402 106.85803 107.40198 106.25793 107.36002 c +106.15791 107.35302 106.09516 107.35204 106.06968 107.35708 c +106.0442 107.36211 106.01185 107.3839 105.97262 107.42226 c +105.97916 107.45921 105.98498 107.49049 105.99004 107.51601 c +105.99512 107.54142 106.0014 107.56593 106.00891 107.5892 c +107.26758 110.9528 l +110.19305 111.15736 l +110.33854 111.16754 110.4493 111.20045 110.52536 111.25599 c +110.60142 111.31163 110.69833 111.41203 110.81609 111.5573 c +110.93187 111.46946 l +110.48819 110.17065 l +110.47286 110.12848 110.42468 110.09885 110.34365 110.08175 c +110.26261 110.06466 110.17435 110.05277 110.07889 110.0461 c +107.43983 109.86155 l +106.94363 108.62773 l +107.69811 108.55248 108.25207 108.47022 108.60554 108.38066 c +109.18716 108.22946 109.68194 107.98087 110.08989 107.63479 c +110.4398 107.33486 110.71291 106.98968 110.90926 106.59912 c +111.1056 106.20847 111.21951 105.78819 111.25098 105.33809 c +111.32124 104.33339 111.02187 103.4696 110.3529 102.74669 c +109.68391 102.02378 108.80162 101.62402 107.70598 101.54741 c +107.26046 101.51625 106.89829 101.53432 106.61948 101.60163 c +106.155 101.71077 105.91005 101.94719 105.88461 102.31088 c +105.87508 102.44727 105.9156 102.57003 106.0062 102.67915 c +106.09679 102.78828 106.24438 102.84999 106.44894 102.8643 c +106.70808 102.88242 107.05817 102.75957 107.49919 102.49574 c +h +117.10034 103.71191 m +117.2992 104.46133 117.35015 105.52932 117.25319 106.91592 c +117.17594 108.02062 117.03926 108.89732 116.84314 109.54603 c +116.47543 110.75382 115.90517 111.33064 115.13232 111.2766 c +114.35945 111.22256 113.87402 110.55367 113.67599 109.26972 c +113.573 108.58648 113.55998 107.69469 113.63692 106.59448 c +113.70908 105.5625 113.84406 104.7428 114.04187 104.13533 c +114.41357 103.00094 114.99949 102.46172 115.79962 102.51768 c +116.46791 102.56441 116.90148 102.96248 117.10034 103.71191 c +h +117.69006 110.17403 m +118.21123 109.31961 118.51202 108.31734 118.59245 107.16716 c +118.65571 106.26247 118.57438 105.40022 118.34846 104.58038 c +117.92178 103.03838 117.05379 102.22163 115.74448 102.13007 c +114.84888 102.06744 114.08396 102.42282 113.44968 103.19622 c +112.77068 104.02132 112.37904 105.17942 112.27477 106.67055 c +112.19276 107.84348 112.32904 108.86719 112.68361 109.74175 c +113.16236 110.93105 113.98137 111.56622 115.14066 111.64729 c +116.18629 111.72041 117.03608 111.22929 117.69006 110.17403 c +h +119.45876 102.52 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +825 99.099998 m +818 99.099998 l +S +92.400002 67.199997 m +92.400002 74.199997 l +S +CM +132.56599 51.764194 m +132.76486 52.513611 132.81581 53.581608 132.71886 54.968201 c +132.6416 56.072933 132.50491 56.949646 132.30879 57.598354 c +131.9411 58.806118 131.37083 59.382973 130.59798 59.32893 c +129.82512 59.274883 129.33968 58.605934 129.14163 57.32206 c +129.03867 56.638733 129.02565 55.746983 129.10258 54.646801 c +129.17474 53.614811 129.30972 52.79509 129.50754 52.187618 c +129.87924 51.053223 130.46515 50.514011 131.26527 50.569962 c +131.93358 50.616692 132.36714 51.014767 132.56599 51.764194 c +h +133.15572 58.226341 m +133.67688 57.371937 133.97766 56.369656 134.05809 55.219463 c +134.12135 54.314762 134.04004 53.452511 133.81413 52.632664 c +133.38744 51.090675 132.51945 50.273918 131.21014 50.182362 c +130.31454 50.119736 129.54962 50.475113 128.91534 51.248512 c +128.23634 52.073605 127.84471 53.231709 127.74044 54.722866 c +127.65842 55.895794 127.7947 56.919502 128.14928 57.794025 c +128.62802 58.983322 129.44704 59.618488 130.60632 59.699554 c +131.65195 59.772671 132.50174 59.281605 133.15572 58.226341 c +h +134.92442 50.572285 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +92.400002 577.20001 m +92.400002 570.20001 l +S +194.14999 67.199997 m +194.14999 74.199997 l +S +CM +226.68481 66.352921 m +226.68791 66.341713 226.69083 66.315651 226.6937 66.274734 c +227.26782 58.064316 l +227.2923 57.714252 227.40115 57.498016 227.59418 57.415581 c +227.78729 57.333141 228.13902 57.300636 228.64944 57.318054 c +228.6628 57.127113 l +224.8167 56.858166 l +224.80238 57.062744 l +225.35063 57.12849 225.70451 57.228619 225.86412 57.363129 c +226.02373 57.497631 226.08922 57.769463 226.06061 58.178623 c +225.61905 64.493286 l +225.60379 64.711502 225.56494 64.875534 225.50244 64.985367 c +225.43993 65.095207 225.31773 65.143768 225.13588 65.13105 c +225.01776 65.122795 224.86665 65.079109 224.68251 64.999992 c +224.49849 64.920876 224.32716 64.839233 224.16855 64.755043 c +224.1552 64.945984 l +226.56871 66.396194 l +226.65062 66.401924 l +226.67036 66.380455 226.68173 66.36412 226.68481 66.352921 c +h +234.78072 58.911743 m +234.97961 59.661163 235.03055 60.729156 234.93358 62.115753 c +234.85634 63.220486 234.71965 64.097191 234.52351 64.745903 c +234.15587 65.953667 233.58554 66.530518 232.81273 66.476479 c +232.03992 66.42244 231.5544 65.753479 231.35637 64.469612 c +231.25339 63.786282 231.24036 62.894531 231.31729 61.79435 c +231.38945 60.76236 231.52446 59.942638 231.72232 59.335171 c +232.09396 58.200771 232.6799 57.661564 233.48004 57.717514 c +234.14832 57.764244 234.58191 58.162319 234.78072 58.911743 c +h +235.37047 65.373894 m +235.89165 64.519485 236.19238 63.517204 236.27281 62.367016 c +236.33607 61.462315 236.25484 60.600063 236.02887 59.780216 c +235.60219 58.238228 234.73425 57.421471 233.42496 57.329918 c +232.52934 57.267288 231.76439 57.622665 231.1301 58.396061 c +230.45108 59.221157 230.05945 60.379257 229.95517 61.870419 c +229.87315 63.043343 230.00948 64.067055 230.36403 64.941582 c +230.84274 66.130867 231.66182 66.766045 232.82109 66.847107 c +233.86674 66.920227 234.71646 66.429153 235.37047 65.373894 c +h +241.76366 59.40004 m +241.96257 60.14946 242.01349 61.217453 241.91653 62.604046 c +241.83928 63.708778 241.70259 64.585487 241.50645 65.2342 c +241.13881 66.441963 240.56848 67.018814 239.79567 66.964775 c +239.02286 66.910736 238.53734 66.241776 238.33932 64.957909 c +238.23633 64.274582 238.22331 63.382828 238.30025 62.282646 c +238.37241 61.250656 238.50742 60.430935 238.70528 59.823467 c +239.0769 58.689068 239.66286 58.149857 240.463 58.205811 c +241.13127 58.252541 241.56485 58.650616 241.76366 59.40004 c +h +242.35342 65.86219 m +242.87459 65.007782 243.17534 64.005501 243.25577 62.855309 c +243.31903 61.950607 243.23778 61.08836 243.01181 60.268513 c +242.58514 58.726521 241.71721 57.909767 240.4079 57.818211 c +239.51228 57.755585 238.74733 58.110958 238.11304 58.884357 c +237.43402 59.709454 237.04239 60.867554 236.93811 62.358711 c +236.85609 63.531639 236.99242 64.555351 237.34698 65.429878 c +237.82568 66.619164 238.64478 67.254341 239.80405 67.335403 c +240.84969 67.408524 241.69942 66.91745 242.35342 65.86219 c +h +244.12215 58.208134 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +194.14999 577.20001 m +194.14999 570.20001 l +S +295.89999 67.199997 m +295.89999 74.199997 l +S +CM +324.51443 63.987324 m +326.05759 65.831238 327.09851 67.178604 327.63748 68.029472 c +328.17654 68.880348 328.41916 69.689934 328.36545 70.458237 c +328.31839 71.131081 328.10068 71.630936 327.71234 71.957848 c +327.32397 72.284744 326.87753 72.430542 326.37286 72.395256 c +325.75009 72.351707 325.26132 72.089111 324.90665 71.607468 c +324.71045 71.342476 324.53281 70.944031 324.37354 70.412086 c +324.07605 70.452965 l +324.23019 71.514481 324.56476 72.267677 325.07959 72.712555 c +325.59439 73.157425 326.16315 73.401634 326.78604 73.44519 c +327.55435 73.498917 328.19296 73.300301 328.70187 72.84935 c +329.21075 72.398392 329.48978 71.822876 329.53873 71.122765 c +329.59088 70.377182 329.38422 69.64093 328.91879 68.913979 c +328.45337 68.187035 327.42331 66.87925 325.82846 64.990608 c +328.95853 65.209488 l +329.39496 65.240005 329.69824 65.313751 329.86819 65.430702 c +330.03815 65.547661 330.22037 65.816238 330.41492 66.236435 c +330.5979 66.167 l +329.974 64.211479 l +324.52542 63.830479 l +h +335.71695 65.969894 m +335.91574 66.719307 335.96667 67.7873 335.86972 69.173897 c +335.79245 70.278625 335.65576 71.155334 335.45975 71.804054 c +335.09198 73.01181 334.52176 73.588669 333.74884 73.534622 c +332.97604 73.480583 332.49063 72.81163 332.29251 71.527756 c +332.18961 70.844429 332.17657 69.952682 332.25351 68.852501 c +332.32568 67.820511 332.4606 67.000778 332.65845 66.393311 c +333.03009 65.258911 333.61603 64.719704 334.41617 64.775658 c +335.08444 64.822388 335.51804 65.220459 335.71695 65.969894 c +h +336.30658 72.432037 m +336.82776 71.577629 337.1286 70.575356 337.20905 69.425163 c +337.27231 68.520462 337.19095 67.658203 336.965 66.838356 c +336.53833 65.296364 335.67038 64.479614 334.36108 64.388062 c +333.46545 64.325432 332.7005 64.680809 332.06622 65.454201 c +331.38721 66.279297 330.99557 67.437401 330.8913 68.928558 c +330.80927 70.101486 330.94559 71.125198 331.30017 71.999718 c +331.77896 73.189018 332.59796 73.824188 333.75723 73.905251 c +334.80286 73.978371 335.65259 73.487297 336.30658 72.432037 c +h +342.69989 66.458183 m +342.89868 67.207603 342.94962 68.275597 342.85266 69.662186 c +342.77539 70.766922 342.6387 71.643631 342.44269 72.292351 c +342.07495 73.500107 341.5047 74.076965 340.73181 74.022919 c +339.95898 73.96888 339.47357 73.299927 339.27545 72.016052 c +339.17255 71.332726 339.15955 70.440979 339.23648 69.34079 c +339.30862 68.3088 339.44354 67.489075 339.64139 66.881607 c +340.01303 65.747208 340.59897 65.208 341.39911 65.263954 c +342.06738 65.310684 342.50098 65.708755 342.69989 66.458183 c +h +343.28955 72.920334 m +343.8107 72.065926 344.11157 71.063652 344.19199 69.91346 c +344.25525 69.008759 344.17389 68.1465 343.94794 67.326653 c +343.52127 65.78466 342.65332 64.967911 341.34402 64.87635 c +340.44843 64.813728 339.68347 65.169098 339.04916 65.942497 c +338.37015 66.767593 337.97852 67.925697 337.87424 69.416855 c +337.79224 70.589783 337.92856 71.613495 338.28311 72.488014 c +338.7619 73.677315 339.5809 74.312477 340.74017 74.393547 c +341.78583 74.46666 342.63553 73.975594 343.28955 72.920334 c +h +345.05826 65.266273 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +295.89999 577.20001 m +295.89999 570.20001 l +S +397.64999 67.199997 m +397.64999 74.199997 l +S +CM +427.72766 71.848846 m +428.15729 71.618484 428.5152 71.513313 428.8017 71.533348 c +429.43814 71.57785 429.89587 71.825714 430.17496 72.276947 c +430.45407 72.72818 430.57602 73.206116 430.54074 73.710739 c +430.50674 74.197182 430.35187 74.615784 430.07602 74.966545 c +429.60968 75.559807 428.87415 75.821312 427.86942 75.751053 c +427.81036 75.746918 427.75357 75.741806 427.69916 75.735718 c +427.64478 75.72963 427.58151 75.719498 427.50943 75.705315 c +427.48337 75.881668 l +428.19235 76.196213 428.74402 76.538589 429.13846 76.908791 c +429.53287 77.279007 429.71051 77.743698 429.67139 78.302887 c +429.63675 78.798424 429.44556 79.16423 429.09784 79.400322 c +428.75012 79.636398 428.3649 79.739662 427.94202 79.710091 c +427.44196 79.675117 427.01389 79.460175 426.65778 79.065224 c +426.46259 78.850563 426.25925 78.525696 426.04749 78.090599 c +425.83276 78.12355 l +425.96628 78.827286 426.26633 79.40332 426.733 79.851685 c +427.19955 80.300041 427.7579 80.546944 428.40802 80.592407 c +429.10361 80.641045 429.65454 80.487701 430.06082 80.132355 c +430.46719 79.777031 430.68777 79.349312 430.72275 78.849236 c +430.75357 78.408249 430.62506 77.992683 430.33707 77.602493 c +430.17444 77.380981 429.91577 77.127617 429.5611 76.842415 c +430.01056 76.686539 430.37589 76.492798 430.65701 76.261192 c +431.18597 75.818497 431.47595 75.231186 431.52716 74.499245 c +431.58755 73.63546 431.30103 72.85022 430.66748 72.143494 c +430.03384 71.43676 429.08975 71.039536 427.83502 70.951797 c +427.27579 70.912697 426.87793 70.968246 426.64127 71.118446 c +426.40463 71.268654 426.27963 71.439217 426.26627 71.630165 c +426.258 71.74836 426.28757 71.864639 426.35495 71.978989 c +426.42233 72.093346 426.54013 72.156395 426.70831 72.168159 c +426.9584 72.185646 427.29816 72.079208 427.72766 71.848846 c +h +437.31454 73.074287 m +437.51334 73.8237 437.56427 74.891693 437.46732 76.27829 c +437.39008 77.383018 437.25339 78.259735 437.05734 78.908447 c +436.68961 80.116211 436.11938 80.693069 435.34647 80.639015 c +434.57364 80.584976 434.08823 79.916031 433.89011 78.632149 c +433.78723 77.94883 433.7742 77.057076 433.85114 75.956894 c +433.92328 74.924904 434.0582 74.105179 434.25604 73.497711 c +434.62781 72.363319 435.21362 71.824104 436.01379 71.880051 c +436.68204 71.926781 437.11563 72.32486 437.31454 73.074287 c +h +437.90421 79.53643 m +438.42538 78.68203 438.72623 77.679749 438.80664 76.529556 c +438.8699 75.624855 438.78857 74.762604 438.56259 73.942757 c +438.13593 72.400764 437.26797 71.584007 435.95868 71.492455 c +435.06308 71.429825 434.29813 71.785202 433.66382 72.558601 c +432.9848 73.383698 432.59317 74.541794 432.48889 76.032959 c +432.40689 77.205879 432.54321 78.229591 432.89777 79.104118 c +433.37656 80.293411 434.19556 80.928581 435.35483 81.009644 c +436.40048 81.082764 437.25031 80.591698 437.90421 79.53643 c +h +444.29749 73.562584 m +444.49631 74.311996 444.54721 75.37999 444.45026 76.766586 c +444.37302 77.871315 444.23633 78.748032 444.04028 79.396744 c +443.67255 80.6045 443.10233 81.181358 442.32941 81.127312 c +441.55661 81.073273 441.07117 80.40432 440.87305 79.120445 c +440.77017 78.437126 440.75714 77.545372 440.83408 76.44519 c +440.90625 75.4132 441.04114 74.593475 441.23901 73.986008 c +441.61075 72.851616 442.19659 72.312393 442.99673 72.368347 c +443.66501 72.415077 444.09857 72.813156 444.29749 73.562584 c +h +444.88715 80.024727 m +445.40833 79.170319 445.70917 78.168045 445.78961 77.017853 c +445.85287 76.113152 445.77151 75.2509 445.54556 74.431046 c +445.11887 72.889061 444.25095 72.072304 442.94162 71.980751 c +442.04602 71.918121 441.28107 72.273499 440.64676 73.046898 c +439.96777 73.871994 439.57611 75.03009 439.47186 76.521248 c +439.38983 77.694176 439.52615 78.717888 439.88071 79.592415 c +440.35953 80.781708 441.1785 81.416878 442.33777 81.49794 c +443.38342 81.57106 444.23325 81.079994 444.88715 80.024727 c +h +446.65588 72.370674 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +397.64999 577.20001 m +397.64999 570.20001 l +S +499.39999 67.199997 m +499.39999 74.199997 l +S +CM +530.49835 86.237381 m +527.48096 81.27066 l +530.82928 81.504799 l +h +530.8501 87.673622 m +531.49799 87.718925 l +531.92719 81.581573 l +533.35242 81.681236 l +533.41583 80.774269 l +531.9906 80.674606 l +532.1532 78.349228 l +531.06885 78.273399 l +530.90625 80.598785 l +526.97833 80.32412 l +526.91492 81.231087 l +h +538.59161 80.156273 m +538.79047 80.905685 538.84149 81.973686 538.74451 83.360283 c +538.66724 84.465012 538.53058 85.341721 538.33441 85.990433 c +537.96667 87.198189 537.39648 87.775047 536.62354 87.721001 c +535.85077 87.666962 535.3653 86.998009 535.1673 85.714142 c +535.06433 85.030815 535.05127 84.139061 535.12823 83.038879 c +535.20038 82.006889 535.33527 81.187164 535.53314 80.579697 c +535.90491 79.445305 536.49072 78.906082 537.29089 78.962036 c +537.95917 79.008766 538.3927 79.406845 538.59161 80.156273 c +h +539.18127 86.618416 m +539.70245 85.764008 540.0033 84.761734 540.08374 83.611542 c +540.14703 82.706841 540.06567 81.844589 539.83972 81.024734 c +539.41302 79.48275 538.5451 78.665993 537.23578 78.57444 c +536.34015 78.51181 535.5752 78.867188 534.94092 79.640587 c +534.26202 80.465683 533.87036 81.623787 533.76611 83.114944 c +533.68408 84.287872 533.82031 85.311577 534.17487 86.186104 c +534.65369 87.375397 535.47266 88.010567 536.6319 88.091629 c +537.67755 88.164749 538.5274 87.673683 539.18127 86.618416 c +h +545.57458 80.644569 m +545.77338 81.393982 545.8244 82.461983 545.72748 83.848579 c +545.65021 84.953308 545.51349 85.830017 545.31738 86.478729 c +544.94965 87.686485 544.37939 88.263344 543.60651 88.209297 c +542.83368 88.155258 542.34827 87.486305 542.15027 86.202438 c +542.04724 85.519112 542.03424 84.627357 542.11115 83.527176 c +542.18335 82.495186 542.31824 81.675461 542.51611 81.067993 c +542.88782 79.933601 543.47369 79.394379 544.2738 79.450333 c +544.94208 79.497063 545.37567 79.895134 545.57458 80.644569 c +h +546.16425 87.106712 m +546.68542 86.252304 546.98627 85.250031 547.06671 84.099838 c +547.12994 83.195137 547.04858 82.332886 546.82263 81.513031 c +546.396 79.971046 545.52802 79.154289 544.21875 79.062737 c +543.32312 79.000107 542.55817 79.355484 541.92389 80.128883 c +541.24493 80.953979 540.85333 82.112083 540.74902 83.603241 c +540.66705 84.776169 540.80322 85.799873 541.15778 86.6744 c +541.6366 87.863693 542.45563 88.498863 543.61487 88.579926 c +544.66052 88.653046 545.51031 88.16198 546.16425 87.106712 c +h +547.93298 79.45266 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +499.39999 577.20001 m +499.39999 570.20001 l +S +601.15002 67.199997 m +601.15002 74.199997 l +S +CM +630.6358 86.047836 m +631.07684 85.784012 631.41101 85.660049 631.63837 85.675949 c +632.16119 85.712509 632.60193 85.975174 632.96063 86.463951 c +633.31927 86.952736 633.47516 87.533531 633.4281 88.206383 c +633.34576 89.383842 632.65912 90.187836 631.36816 90.618362 c +630.65253 90.856125 629.99469 90.954025 629.39453 90.912064 c +629.29456 90.905075 629.23181 90.904114 629.2063 90.909187 c +629.18085 90.914253 629.1485 90.935974 629.10919 90.97435 c +629.11584 91.011353 629.12158 91.042603 629.12671 91.068077 c +629.13171 91.093567 629.13806 91.117981 629.14557 91.14135 c +630.40417 94.504921 l +633.32965 94.709496 l +633.47516 94.719666 633.58594 94.752533 633.66199 94.808105 c +633.7381 94.863678 633.83502 94.964111 633.95276 95.109406 c +634.06848 95.021553 l +633.62476 93.722786 l +633.6095 93.680611 633.56134 93.650963 633.48022 93.633881 c +633.39923 93.616791 633.31091 93.604904 633.21545 93.598228 c +630.57642 93.413689 l +630.08026 92.179787 l +630.83478 92.10463 631.38867 92.022301 631.74213 91.932808 c +632.32379 91.781609 632.81854 91.532967 633.2265 91.186874 c +633.57635 90.886986 633.84955 90.541756 634.04584 90.151176 c +634.24219 89.760605 634.35614 89.340279 634.38763 88.890213 c +634.45789 87.88549 634.15851 87.021698 633.4895 86.29879 c +632.8205 85.575882 631.93823 85.176125 630.84265 85.09951 c +630.39709 85.068352 630.03485 85.086418 629.7561 85.153725 c +629.29169 85.262878 629.04669 85.49929 629.02124 85.862984 c +629.01172 85.999374 629.05225 86.122124 629.14282 86.231255 c +629.23346 86.340378 629.38098 86.402092 629.58563 86.416397 c +629.84467 86.434517 630.19482 86.311668 630.6358 86.047836 c +h +640.23694 87.264 m +640.43585 88.013428 640.48676 89.081421 640.38977 90.46801 c +640.31256 91.572746 640.17584 92.449455 639.97974 93.098167 c +639.61206 94.305931 639.04175 94.882782 638.26892 94.828743 c +637.49603 94.774696 637.01062 94.105743 636.81256 92.821869 c +636.70959 92.138542 636.69659 91.246796 636.7735 90.146606 c +636.8457 89.114616 636.98071 88.294899 637.17853 87.687431 c +637.55017 86.553032 638.13611 86.013824 638.93628 86.069778 c +639.60455 86.116508 640.03815 86.51458 640.23694 87.264 c +h +640.82666 93.726158 m +641.34784 92.87175 641.64862 91.869469 641.72906 90.719276 c +641.7923 89.814575 641.71106 88.952324 641.48511 88.132477 c +641.05841 86.590485 640.19049 85.773735 638.88104 85.682167 c +637.98553 85.619553 637.22058 85.974922 636.5863 86.748322 c +635.90729 87.573418 635.51569 88.731522 635.41138 90.222679 c +635.32935 91.395607 635.4657 92.419319 635.82025 93.293839 c +636.29895 94.483131 637.11804 95.118301 638.27728 95.199371 c +639.32294 95.272484 640.17267 94.781418 640.82666 93.726158 c +h +647.21985 87.752296 m +647.41876 88.501717 647.46973 89.56971 647.37274 90.956306 c +647.29547 92.061043 647.15881 92.937752 646.96271 93.586456 c +646.59503 94.794228 646.02472 95.371078 645.25189 95.317039 c +644.479 95.262993 643.99359 94.59404 643.79553 93.310165 c +643.69257 92.626839 643.6795 91.735092 643.75647 90.634903 c +643.82861 89.602913 643.96362 88.783195 644.1615 88.175728 c +644.53314 87.041328 645.11908 86.502121 645.91919 86.558067 c +646.58746 86.604797 647.02106 87.002876 647.21985 87.752296 c +h +647.80963 94.214447 m +648.33081 93.360046 648.63153 92.357758 648.71198 91.207573 c +648.77527 90.302872 648.69397 89.44062 648.46802 88.620773 c +648.04138 87.078781 647.1734 86.262032 645.86401 86.170464 c +644.96851 86.107841 644.20355 86.463219 643.56927 87.236618 c +642.89026 88.061714 642.4986 89.219818 642.39435 90.710976 c +642.31232 91.883896 642.44861 92.907616 642.80322 93.782135 c +643.28192 94.971428 644.10101 95.606598 645.26025 95.68766 c +646.30591 95.76078 647.15564 95.269707 647.80963 94.214447 c +h +649.57837 86.560394 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +601.15002 577.20001 m +601.15002 570.20001 l +S +702.90002 67.199997 m +702.90002 74.199997 l +S +CM +735.82074 93.447624 m +735.33325 92.741982 734.66223 92.359283 733.8075 92.299515 c +733.00739 92.243561 732.25262 92.567673 731.54327 93.271866 c +730.8338 93.976051 730.43561 94.950966 730.34851 96.196632 c +730.23633 97.801445 730.77643 99.223419 731.96887 100.46263 c +733.03815 101.50591 734.28192 102.07713 735.70026 102.1763 c +735.75012 101.95366 l +735.18909 101.80936 734.70923 101.63304 734.31036 101.42469 c +733.91144 101.21635 733.56189 100.9395 733.26178 100.59415 c +732.95276 100.24361 732.67041 99.80587 732.41473 99.280884 c +732.15912 98.755913 731.99408 98.241859 731.91956 97.738686 c +732.18933 97.931152 732.42365 98.075447 732.6225 98.171585 c +732.97601 98.342491 733.33698 98.440826 733.70514 98.466576 c +734.42798 98.51712 735.05237 98.309525 735.57837 97.843781 c +736.10431 97.378021 736.39972 96.681442 736.4646 95.754021 c +736.52277 94.922058 736.30811 94.153267 735.82074 93.447624 c +h +734.85443 96.730995 m +734.48151 97.490685 733.91321 97.843834 733.14935 97.790421 c +732.44476 97.74115 731.99115 97.499275 731.78845 97.064812 c +731.66925 96.809784 731.62976 96.395859 731.6698 95.823036 c +731.72162 95.082008 731.93024 94.367943 732.29584 93.680832 c +732.66138 92.993713 733.18518 92.674004 733.86713 92.721687 c +734.40808 92.759521 734.78516 93.017731 734.99841 93.496346 c +735.21167 93.974953 735.29657 94.523384 735.25336 95.141678 c +735.21106 95.746315 735.07812 96.276085 734.85443 96.730995 c +h +741.7561 94.362915 m +741.95502 95.112335 742.00598 96.180336 741.909 97.566925 c +741.83173 98.671661 741.69507 99.54837 741.4989 100.19707 c +741.13129 101.40485 740.56097 101.9817 739.78815 101.92766 c +739.01526 101.87361 738.52979 101.20466 738.33179 99.920784 c +738.22882 99.237457 738.21576 98.345711 738.29272 97.245522 c +738.36487 96.213531 738.49988 95.393814 738.69763 94.786339 c +739.0694 93.651947 739.65533 93.11274 740.45544 93.168686 c +741.12372 93.215416 741.55731 93.613495 741.7561 94.362915 c +h +742.34589 100.82507 m +742.86707 99.970665 743.16779 98.968384 743.24823 97.818192 c +743.31152 96.91349 743.23016 96.051231 743.00427 95.231392 c +742.57764 93.6894 741.70959 92.872643 740.40027 92.781082 c +739.50464 92.71846 738.73981 93.073837 738.10553 93.847237 c +737.42651 94.672333 737.03485 95.830437 736.9306 97.321594 c +736.84857 98.494514 736.98486 99.518234 737.33948 100.39275 c +737.81818 101.58205 738.63715 102.21721 739.79651 102.29828 c +740.84204 102.37139 741.69189 101.88033 742.34589 100.82507 c +h +748.73907 94.851212 m +748.93799 95.600632 748.98889 96.668625 748.89197 98.055222 c +748.8147 99.15995 748.67798 100.03667 748.48187 100.68537 c +748.11426 101.89314 747.54388 102.46999 746.77112 102.41595 c +745.99817 102.3619 745.51276 101.69296 745.31476 100.40908 c +745.21173 99.725754 745.19873 98.834 745.27563 97.733818 c +745.34784 96.701828 745.48285 95.882111 745.6806 95.274635 c +746.05231 94.140244 746.63824 93.601036 747.43842 93.656982 c +748.10669 93.703712 748.54028 94.101791 748.73907 94.851212 c +h +749.32886 101.31336 m +749.85004 100.45896 750.15076 99.456673 750.2312 98.30648 c +750.29443 97.401787 750.21307 96.539528 749.98724 95.719688 c +749.56055 94.177696 748.6925 93.360931 747.38324 93.269379 c +746.48761 93.206749 745.72278 93.562134 745.08844 94.335533 c +744.40942 95.160629 744.01782 96.318726 743.91351 97.809891 c +743.83154 98.982811 743.96783 100.00652 744.32239 100.88105 c +744.80109 102.07034 745.62012 102.70551 746.77948 102.78658 c +747.82501 102.85969 748.6748 102.36862 749.32886 101.31336 c +h +751.09753 93.659309 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +702.90002 577.20001 m +702.90002 570.20001 l +S +804.65002 67.199997 m +804.65002 74.199997 l +S +CM +837.16925 108.96335 m +837.185 108.7383 l +834.86487 99.386696 l +833.96478 99.323753 l +836.14343 107.85686 l +833.17023 107.64896 l +832.72919 107.61812 832.41724 107.52321 832.23419 107.36422 c +832.05115 107.20523 831.82806 106.88354 831.565 106.39917 c +831.31873 106.49159 l +831.56335 107.23965 831.7149 107.70138 831.77344 107.87679 c +831.83203 108.0522 831.90765 108.29389 832.00031 108.6019 c +h +843.15601 101.45349 m +843.3548 102.2029 843.40582 103.2709 843.3089 104.6575 c +843.23163 105.76223 843.09497 106.63894 842.8988 107.28765 c +842.53107 108.49541 841.96088 109.07227 841.18793 109.01822 c +840.4151 108.96418 839.92969 108.29523 839.73169 107.01136 c +839.62872 106.32803 839.61566 105.43628 839.69263 104.3361 c +839.76477 103.30411 839.89978 102.48438 840.09753 101.87691 c +840.4693 100.74252 841.05511 100.2033 841.85529 100.25925 c +842.52362 100.30599 842.95709 100.70406 843.15601 101.45349 c +h +843.74567 107.91563 m +844.26685 107.06123 844.56769 106.05895 844.64813 104.90876 c +844.71136 104.00406 844.63007 103.14181 844.40417 102.32196 c +843.97742 100.77997 843.10944 99.963211 841.80017 99.871658 c +840.90454 99.809029 840.13959 100.16441 839.50537 100.93781 c +838.82642 101.7629 838.43475 102.92101 838.33051 104.41216 c +838.24847 105.58509 838.3847 106.6088 838.73926 107.48331 c +839.21802 108.67262 840.03705 109.30779 841.19629 109.38885 c +842.24194 109.46197 843.0918 108.9709 843.74567 107.91563 c +h +850.13898 101.94179 m +850.33777 102.6912 850.38879 103.7592 850.29187 105.14579 c +850.2146 106.25053 850.07788 107.12724 849.88177 107.77595 c +849.51404 108.9837 848.94379 109.56056 848.1709 109.50652 c +847.39807 109.45248 846.91266 108.78352 846.7146 107.49966 c +846.61163 106.81632 846.59863 105.92458 846.67554 104.82439 c +846.74774 103.7924 846.88275 102.97268 847.08051 102.3652 c +847.45221 101.23081 848.03809 100.6916 848.8382 100.74755 c +849.50659 100.79429 849.94006 101.19235 850.13898 101.94179 c +h +850.72864 108.40393 m +851.24982 107.54952 851.55066 106.54725 851.6311 105.39706 c +851.69434 104.49236 851.61298 103.6301 851.38715 102.81026 c +850.96033 101.26826 850.09241 100.45151 848.78308 100.35995 c +847.88751 100.29733 847.12256 100.6527 846.48834 101.4261 c +845.80933 102.2512 845.41772 103.4093 845.31342 104.90046 c +845.23138 106.07339 845.36761 107.09709 845.72217 107.97161 c +846.20099 109.16091 847.01996 109.79607 848.17926 109.87714 c +849.22491 109.95026 850.07471 109.4592 850.72864 108.40393 c +h +852.49738 100.74987 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +804.65002 577.20001 m +804.65002 570.20001 l +S +CM +49.391197 302.32791 m +49.189964 305.20569 l +49.401367 305.22049 l +49.421803 304.99344 49.454025 304.82669 49.498028 304.72009 c +49.571743 304.51514 49.694981 304.4187 49.867741 304.43079 c +49.931385 304.43524 49.99538 304.45114 50.059708 304.47849 c +50.124043 304.50574 50.220055 304.55365 50.347763 304.62195 c +53.775391 306.46512 l +50.119259 307.4978 l +50.081936 307.50882 49.998592 307.52475 49.869228 307.54538 c +49.739876 307.56601 49.652466 307.57474 49.607006 307.57156 c +49.488804 307.56329 49.405285 307.51636 49.356449 307.43073 c +49.30761 307.34512 49.283108 307.23825 49.282921 307.11032 c +49.284065 306.89798 l +49.072662 306.88321 l +48.941525 308.75851 l +49.152927 308.77332 l +49.188683 308.58856 49.262108 308.45312 49.373188 308.36728 c +49.484268 308.28143 49.635387 308.21088 49.826553 308.1557 c +55.66404 306.40533 l +56.672092 306.1012 57.408516 305.79413 57.873341 305.48401 c +58.338169 305.17386 58.588863 304.75732 58.625423 304.23453 c +58.643227 303.97995 58.596268 303.73688 58.484543 303.50522 c +58.372837 303.27347 58.178318 303.14798 57.900993 303.1286 c +57.719147 303.11588 57.565575 303.17249 57.440266 303.29855 c +57.314964 303.42453 57.245152 303.58987 57.23085 303.79437 c +57.222584 303.91257 57.25346 304.09177 57.323467 304.33194 c +57.393475 304.57211 57.424973 304.74222 57.417976 304.84225 c +57.400177 305.09683 57.085926 305.34433 56.475208 305.5849 c +55.864487 305.8255 55.459122 305.93869 55.259083 305.92471 c +55.21817 305.92184 55.168636 305.91156 55.110489 305.89377 c +55.052349 305.87598 55.001175 305.85645 54.956985 305.83511 c +50.390629 303.32297 l +50.065025 303.14481 49.852856 302.99405 49.75412 302.87067 c +49.655399 302.74728 49.598064 302.57083 49.582142 302.34128 c +h +47.36747 311.08118 m +46.594837 311.61188 45.958118 312.25714 45.457268 313.01706 c +45.673248 313.16235 l +46.306335 312.47113 46.908894 311.98788 47.48093 311.71262 c +48.478642 311.22964 49.775341 311.04395 51.371056 311.15555 c +52.55307 311.23819 53.520908 311.41092 54.274601 311.67374 c +55.594521 312.13614 56.553013 312.89987 57.150101 313.9649 c +57.387539 313.80338 l +57.158409 313.22537 56.67561 312.58405 55.939121 311.87924 c +54.7188 310.71118 53.283512 310.06949 51.633244 309.9541 c +50.051155 309.84348 48.62925 310.21909 47.36747 311.08118 c +h +54.102482 316.92804 m +54.238407 317.17282 54.295254 317.45425 54.272999 317.77249 c +54.238667 318.26349 53.964989 318.66577 53.451935 318.97946 c +52.938904 319.29303 52.245968 319.41928 51.373089 319.35825 c +50.536591 319.29977 49.924122 319.07541 49.535702 318.68494 c +49.147263 318.29462 48.969746 317.86075 49.00312 317.38342 c +49.026646 317.04706 49.151527 316.74744 49.377766 316.48456 c +49.604012 316.22171 49.817154 316.09729 50.017185 316.11127 c +53.447289 316.35114 l +53.748158 316.49094 53.966553 316.68326 54.102482 316.92804 c +h +57.67004 314.46719 m +57.612885 314.89264 57.50296 315.15793 57.340282 315.26303 c +57.177597 315.36826 56.930328 315.40918 56.598457 315.38599 c +50.051945 314.92822 l +49.706429 314.90405 49.487755 314.84647 49.395882 314.75552 c +49.30402 314.66458 49.266201 314.50317 49.282413 314.27133 c +49.285908 314.22134 49.291439 314.17493 49.299007 314.13205 c +49.306568 314.08917 49.320038 314.02725 49.339394 313.94641 c +49.114365 313.93066 l +48.857662 314.56372 l +48.851521 314.58615 48.662735 315.03204 48.291286 315.90146 c +48.289696 315.92419 48.298737 315.94199 48.31839 315.95477 c +48.338055 315.96759 48.36153 315.97495 48.388805 315.97684 c +49.309406 316.04123 l +48.988384 316.32022 48.747173 316.56839 48.585808 316.78546 c +48.302605 317.17685 48.145912 317.58844 48.115707 318.02039 c +48.071838 318.64774 48.301174 319.2063 48.803722 319.69595 c +49.306263 320.1857 50.021244 320.46295 50.948669 320.5278 c +51.857922 320.59137 52.702042 320.37744 53.48106 319.88599 c +54.260078 319.39453 54.678356 318.7374 54.735901 317.91452 c +54.7537 317.65994 54.737297 317.43726 54.68668 317.24637 c +54.611561 316.9487 54.455288 316.6683 54.217865 316.405 c +56.447773 316.56094 l +56.90694 316.59305 57.183556 316.68777 57.277618 316.84512 c +57.3717 317.00235 57.419273 317.33469 57.420361 317.8418 c +57.659039 317.85849 l +57.895081 314.48294 l +h +44.966927 321.89114 m +44.81646 322.01776 44.73423 322.18103 44.720242 322.38104 c +44.70657 322.57657 44.764225 322.74841 44.893188 322.89676 c +45.022144 323.0451 45.186642 323.12628 45.386677 323.14029 c +45.582169 323.15396 45.754089 323.09631 45.902435 322.96735 c +46.050793 322.83838 46.131802 322.67624 46.145473 322.48071 c +46.159458 322.2807 46.101891 322.10767 45.972771 321.96149 c +45.843655 321.81543 45.681347 321.73563 45.485855 321.72195 c +45.290371 321.70828 45.117397 321.76465 44.966927 321.89114 c +h +54.159649 321.45132 m +54.080177 321.93457 53.975754 322.23563 53.846378 322.35449 c +53.716999 322.47336 53.386368 322.51419 52.854454 322.47699 c +49.601658 322.24954 l +49.30616 322.22888 49.103008 322.19412 48.992218 322.14526 c +48.810593 322.064 48.727402 321.91434 48.742664 321.69608 c +48.746159 321.64609 48.754124 321.59753 48.766556 321.55048 c +48.778988 321.50333 48.824978 321.36832 48.90451 321.14551 c +48.693119 321.13074 l +48.577141 321.41724 l +48.262375 322.19476 48.028107 322.73566 47.874329 323.04016 c +47.810883 323.16364 47.777878 323.24353 47.77533 323.27994 c +47.806519 323.29126 47.840294 323.29822 47.876667 323.30075 c +52.772911 323.64316 l +53.291183 323.67938 53.611862 323.76456 53.734962 323.89877 c +53.858051 324.03308 53.922367 324.32199 53.927906 324.76544 c +54.118851 324.77881 l +54.350594 321.46469 l +h +47.605389 327.86615 m +47.796333 327.87952 l +47.812962 327.70706 47.847073 327.56219 47.898693 327.4447 c +47.950306 327.32721 48.044308 327.27322 48.180695 327.28278 c +48.267063 327.28882 48.501865 327.42633 48.885082 327.69522 c +49.085308 327.83713 49.330875 328.01648 49.621799 328.23331 c +49.234802 328.4758 48.932129 328.65564 48.713787 328.77289 c +48.361794 328.97211 48.135792 329.06818 48.035774 329.06119 c +47.917576 329.05292 47.841354 328.99969 47.80711 328.90137 c +47.772865 328.80304 47.754974 328.66696 47.753418 328.49323 c +47.562473 328.47986 l +47.408928 330.67569 l +47.599869 330.68906 l +47.634266 330.4585 47.711876 330.24689 47.832703 330.05435 c +47.953518 329.86182 48.106876 329.71033 48.292763 329.59995 c +50.058666 328.55167 l +52.660488 330.54269 l +52.998878 330.79935 53.214718 331.01202 53.307987 331.18073 c +53.401264 331.34946 53.445145 331.53867 53.43961 331.74838 c +53.630554 331.76175 l +53.827492 328.94543 l +53.636547 328.93207 l +53.609085 329.12885 l +53.592686 329.23276 53.554737 329.31812 53.495258 329.3847 c +53.435776 329.45132 53.365112 329.48187 53.283283 329.47617 c +53.196903 329.47012 53.012012 329.37036 52.728584 329.17694 c +52.588829 329.08496 52.399658 328.94833 52.161049 328.76724 c +52.043716 328.68134 51.88126 328.5546 51.673695 328.38702 c +51.466122 328.21954 51.288712 328.078 51.141453 327.96265 c +52.929867 326.98444 l +53.143661 326.86694 53.285774 326.79459 53.356194 326.76755 c +53.426613 326.74048 53.484543 326.72861 53.53001 326.73178 c +53.61639 326.73782 53.67075 326.77701 53.693108 326.84933 c +53.71545 326.92178 53.734268 327.07727 53.749557 327.31592 c +53.940502 327.32925 l +54.081654 325.3107 l +53.890713 325.29733 l +53.823536 325.53934 53.747173 325.71677 53.661629 325.82956 c +53.576069 325.94238 53.385532 326.08664 53.09 326.26245 c +50.667145 327.6897 l +48.774296 326.24164 l +48.397217 325.95023 48.175804 325.75201 48.110062 325.64697 c +48.044315 325.54181 48.00729 325.32001 47.998997 324.98129 c +47.808052 324.96793 l +h +47.537006 336.5368 m +47.946568 337.04974 48.558224 337.33459 49.371998 337.39151 c +49.674797 333.06128 l +50.726341 333.18051 51.477947 333.47287 51.929649 333.93851 c +52.381344 334.40405 52.586533 334.93234 52.545208 335.52328 c +52.511822 336.00073 52.358665 336.39432 52.085739 336.70413 c +51.812813 337.01395 51.437065 337.2915 50.958504 337.53671 c +51.023647 337.78107 l +51.614048 337.6351 52.172623 337.32349 52.699379 336.84637 c +53.226135 336.36926 53.515411 335.76025 53.567234 335.01917 c +53.626995 334.16455 53.350399 333.4816 52.737419 332.97049 c +52.124439 332.45938 51.397442 332.17438 50.556393 332.11557 c +49.642605 332.05167 48.834923 332.26706 48.133354 332.76163 c +47.431778 333.2562 47.050632 333.93765 46.989914 334.80594 c +46.945091 335.44696 47.12746 336.0239 47.537006 336.5368 c +h +48.287094 333.30685 m +48.542767 333.17859 48.859219 333.09555 49.236458 333.05798 c +49.035225 335.93576 l +48.584099 335.854 48.25145 335.74393 48.037277 335.60553 c +47.652782 335.3548 47.478821 334.96802 47.515377 334.44522 c +47.551617 333.92697 47.808853 333.54749 48.287094 333.30685 c +h +52.965622 338.52673 m +52.895142 338.94675 52.789871 339.2272 52.649807 339.36816 c +52.509754 339.50912 52.251057 339.56644 51.873726 339.54004 c +45.211285 339.07416 l +44.911228 339.05319 44.706135 339.01367 44.595978 338.95575 c +44.411396 338.85141 44.3288 338.66071 44.34819 338.38336 c +44.352642 338.31973 44.364304 338.25089 44.383186 338.17682 c +44.402077 338.10275 44.429127 338.0098 44.464355 337.8981 c +44.239315 337.88235 l +44.032742 338.48462 43.762863 339.20816 43.429691 340.05276 c +43.427467 340.08459 43.439751 340.10489 43.466553 340.11368 c +43.493351 340.12238 43.552219 340.12991 43.643139 340.13626 c +51.819462 340.70801 l +52.214985 340.73566 52.465931 340.82178 52.572323 340.96625 c +52.678722 341.11072 52.73288 341.3978 52.734825 341.82727 c +52.92577 341.84064 l +53.156567 338.5401 l +h +51.131973 345.7377 m +51.749012 345.60272 52.337685 345.38345 52.897976 345.07999 c +53.495911 344.76093 54.063625 344.31863 54.601124 343.75327 c +54.9561 343.38062 55.208889 343.06479 55.359493 342.80576 c +55.143517 342.66043 l +54.562641 343.32343 53.98362 343.79678 53.406414 344.08081 c +52.384377 344.58496 51.066429 344.78061 49.452518 344.66772 c +48.147755 344.57651 47.090904 344.37018 46.281929 344.04868 c +45.139309 343.59866 44.267551 342.86847 43.66666 341.85788 c +43.429218 342.01953 l +43.779057 342.76575 44.336971 343.47629 45.102959 344.15118 c +46.282173 345.18845 47.644627 345.76108 49.190342 345.86917 c +49.867729 345.91653 50.514927 345.87277 51.131973 345.7377 c +h +52.580048 346.78467 m +f +479.78537 49.407963 m +479.79874 49.217022 l +479.62628 49.20039 479.48129 49.166275 479.36392 49.114658 c +479.24643 49.063049 479.19244 48.969044 479.202 48.832657 c +479.20804 48.746288 479.34555 48.51149 479.61444 48.128273 c +479.75635 47.928043 479.9357 47.682476 480.15253 47.391552 c +480.39493 47.778545 480.57486 48.081223 480.69202 48.299557 c +480.89124 48.651554 480.9874 48.87756 480.98041 48.977577 c +480.97214 49.095779 480.91879 49.171993 480.82047 49.206238 c +480.72214 49.240482 480.58615 49.258381 480.41245 49.259933 c +480.39908 49.450878 l +482.59491 49.604427 l +482.60828 49.413483 l +482.37772 49.379086 482.16611 49.301476 481.97357 49.180649 c +481.78091 49.05983 481.62955 48.906475 481.51917 48.720592 c +480.47089 46.954685 l +482.46191 44.352867 l +482.71857 44.014473 482.93124 43.798634 483.09995 43.705364 c +483.26855 43.61208 483.45789 43.568211 483.6676 43.573742 c +483.68097 43.382801 l +480.86453 43.185856 l +480.8512 43.376801 l +481.04807 43.40427 l +481.15195 43.420666 481.23721 43.458607 481.30392 43.518097 c +481.37054 43.577576 481.401 43.648232 481.39526 43.730064 c +481.38922 43.816441 481.28949 44.001335 481.09616 44.284767 c +481.00409 44.424515 480.86755 44.613693 480.68637 44.852295 c +480.60056 44.969639 480.47382 45.132092 480.30624 45.339657 c +480.13864 45.547222 479.99722 45.72464 479.88187 45.871902 c +478.90366 44.083488 l +478.78607 43.869686 478.71381 43.727577 478.68677 43.657158 c +478.6597 43.586742 478.64771 43.528805 478.65091 43.483334 c +478.65695 43.396954 478.69623 43.342602 478.76855 43.320244 c +478.84088 43.297897 478.99649 43.279083 479.23505 43.263786 c +479.24838 43.072842 l +477.22992 42.931698 l +477.21655 43.122643 l +477.45856 43.189816 477.63599 43.266178 477.74878 43.351727 c +477.86157 43.437283 478.00586 43.627819 478.18155 43.923347 c +479.60883 46.346199 l +478.16077 48.239048 l +477.86945 48.616135 477.67123 48.837547 477.56607 48.903282 c +477.46103 48.969036 477.23911 49.006058 476.90051 49.014359 c +476.88715 49.205299 l +h +485.49716 51.219009 m +486.02786 51.991642 486.67322 52.628368 487.43301 53.129211 c +487.57834 52.913231 l +486.88712 52.280144 486.40387 51.677586 486.12872 51.105556 c +485.64563 50.107838 485.45993 48.811138 485.57153 47.215424 c +485.65417 46.033409 485.8269 45.065571 486.08981 44.311886 c +486.55212 42.991959 487.31586 42.03347 488.38089 41.436378 c +488.21936 41.198944 l +487.64136 41.428066 487.00003 41.91087 486.29523 42.647362 c +485.12717 43.867683 484.48547 45.302967 484.37009 46.953236 c +484.25946 48.535324 484.63519 49.957237 485.49716 51.219009 c +h +491.34402 44.483997 m +491.58881 44.348072 491.87024 44.291229 492.18848 44.31348 c +492.67947 44.347813 493.08176 44.621494 493.39545 45.134544 c +493.70901 45.647575 493.83527 46.340515 493.77423 47.21339 c +493.71576 48.049889 493.49136 48.662361 493.10104 49.050785 c +492.71069 49.439224 492.27686 49.616745 491.79941 49.583359 c +491.46304 49.559837 491.16342 49.434952 490.90054 49.208714 c +490.6377 48.982468 490.51328 48.769329 490.52725 48.569298 c +490.76709 45.139191 l +490.90692 44.838322 491.09924 44.619926 491.34402 44.483997 c +h +488.88327 40.916447 m +489.30872 40.973606 489.57401 41.083523 489.67911 41.246201 c +489.78421 41.408878 489.82516 41.656151 489.80197 41.988022 c +489.34418 48.534534 l +489.32004 48.880051 489.26245 49.098728 489.17151 49.190598 c +489.08057 49.282459 488.91916 49.320278 488.68732 49.30407 c +488.63733 49.300575 488.59091 49.29504 488.54803 49.287472 c +488.50516 49.279911 488.44324 49.266441 488.3624 49.247086 c +488.34665 49.472115 l +488.97971 49.728817 l +489.00214 49.734959 489.44803 49.923744 490.31744 50.295197 c +490.34018 50.296787 490.35797 50.287743 490.37076 50.268089 c +490.38358 50.248425 490.39093 50.224949 490.39282 50.197678 c +490.45721 49.277073 l +490.7363 49.598103 490.98438 49.839306 491.20154 50.000679 c +491.59283 50.283875 492.00452 50.440575 492.43637 50.470772 c +493.06372 50.514641 493.62228 50.285305 494.11194 49.782757 c +494.60168 49.280216 494.87894 48.565235 494.94379 47.63781 c +495.00735 46.728558 494.79343 45.884438 494.30197 45.105419 c +493.81052 44.326401 493.15338 43.908123 492.33051 43.850578 c +492.07593 43.832779 491.85324 43.849186 491.66235 43.899803 c +491.36478 43.974926 491.08429 44.131191 490.82098 44.368614 c +490.97693 42.13871 l +491.00903 41.679539 491.10376 41.402927 491.26111 41.308857 c +491.41846 41.214783 491.75067 41.167206 492.25787 41.166126 c +492.27457 40.927452 l +488.89902 40.69141 l +h +496.30725 53.61956 m +496.43375 53.770023 496.59702 53.852249 496.79703 53.866238 c +496.99255 53.87991 497.16449 53.822262 497.31284 53.693298 c +497.46121 53.564342 497.54239 53.399845 497.55637 53.19981 c +497.57004 53.004318 497.51239 52.832397 497.38342 52.684052 c +497.25446 52.535694 497.09222 52.454678 496.8967 52.441006 c +496.69669 52.427021 496.52365 52.484589 496.37756 52.613716 c +496.23141 52.742825 496.15161 52.905132 496.13794 53.100624 c +496.12427 53.296108 496.18063 53.469082 496.30725 53.61956 c +h +495.86731 44.42683 m +496.35056 44.506302 496.65161 44.610725 496.77048 44.740105 c +496.88934 44.86948 496.93018 45.200115 496.89297 45.732025 c +496.66553 48.984821 l +496.64487 49.280319 496.61011 49.483471 496.56125 49.594265 c +496.48007 49.775894 496.33032 49.859077 496.11215 49.843822 c +496.06207 49.840321 496.01352 49.832355 495.96646 49.819923 c +495.91931 49.807495 495.78439 49.761509 495.56149 49.681969 c +495.54672 49.89336 l +495.83331 50.009346 l +496.61075 50.324104 497.15173 50.55838 497.45615 50.712151 c +497.57962 50.7756 497.65961 50.808609 497.69592 50.81115 c +497.70724 50.779961 497.7142 50.746185 497.71674 50.709816 c +498.05911 45.813572 l +498.09537 45.295296 498.18054 44.974617 498.31485 44.851524 c +498.44907 44.728428 498.73798 44.664112 499.18143 44.658573 c +499.19479 44.467632 l +495.88068 44.235886 l +h +502.28214 50.981091 m +502.2955 50.790146 l +502.12314 50.773525 501.97815 50.739407 501.86069 50.687786 c +501.74319 50.636177 501.68933 50.542179 501.69885 50.405792 c +501.7049 50.319424 501.84232 50.084618 502.1113 49.701405 c +502.2532 49.501179 502.43259 49.255611 502.64929 48.96468 c +502.89178 49.351677 503.07162 49.65435 503.18887 49.872692 c +503.38809 50.224686 503.48416 50.450687 503.47717 50.550705 c +503.4689 50.668907 503.41568 50.745129 503.31735 50.779369 c +503.21902 50.813614 503.08292 50.831505 502.9093 50.833069 c +502.89594 51.024014 l +505.09167 51.177555 l +505.10504 50.98661 l +504.87448 50.952213 504.66287 50.874603 504.47034 50.753777 c +504.2778 50.632961 504.12631 50.479603 504.01602 50.293724 c +502.96765 48.527813 l +504.95868 45.925995 l +505.21533 45.587601 505.42801 45.371761 505.59671 45.278492 c +505.76544 45.185215 505.95465 45.141338 506.16437 45.14687 c +506.17773 44.955925 l +503.36142 44.758991 l +503.34805 44.949932 l +503.54483 44.977394 l +503.64883 44.993801 503.7341 45.031742 503.80069 45.091221 c +503.8674 45.150711 503.89786 45.221367 503.89215 45.303196 c +503.88611 45.389576 503.78635 45.574471 503.59293 45.857895 c +503.50095 45.99765 503.36432 46.186821 503.18323 46.42543 c +503.09732 46.542763 502.97058 46.705219 502.8031 46.912792 c +502.63553 47.120358 502.49411 47.297775 502.37863 47.44503 c +501.40051 45.65662 l +501.28293 45.442818 501.21066 45.300713 501.18362 45.230293 c +501.15659 45.159874 501.14459 45.101936 501.14777 45.056469 c +501.15381 44.970089 501.19299 44.91573 501.26541 44.893379 c +501.33777 44.871029 501.49326 44.852211 501.7319 44.836922 c +501.74524 44.645977 l +499.72678 44.504833 l +499.71344 44.695774 l +499.95532 44.762943 500.13275 44.839306 500.24554 44.924854 c +500.35834 45.01041 500.50262 45.200947 500.67844 45.496483 c +502.10568 47.919334 l +500.65762 49.812183 l +500.3663 50.18927 500.16809 50.410683 500.06296 50.476418 c +499.95779 50.542164 499.73599 50.579189 499.39737 50.58749 c +499.38403 50.778435 l +h +510.95279 51.049473 m +511.46573 50.639912 511.75058 50.028255 511.8075 49.214481 c +507.47726 48.911682 l +507.5965 47.860138 507.88882 47.108532 508.35449 46.656834 c +508.82004 46.205135 509.34833 45.99995 509.93939 46.041279 c +510.41672 46.074657 510.8103 46.227818 511.12012 46.500744 c +511.43002 46.773674 511.70749 47.149418 511.9527 47.627975 c +512.19714 47.56284 l +512.05109 46.972431 511.73956 46.413864 511.26245 45.887108 c +510.78534 45.360352 510.17624 45.071068 509.43524 45.019253 c +508.58054 44.959488 507.89758 45.23608 507.38647 45.84906 c +506.87537 46.46204 506.59036 47.189041 506.53156 48.030087 c +506.46765 48.943874 506.68304 49.751556 507.17761 50.453125 c +507.67215 51.154701 508.35364 51.535847 509.22192 51.596565 c +509.86295 51.641392 510.43997 51.459026 510.95279 51.049473 c +h +507.72284 50.299385 m +507.59457 50.043713 507.51166 49.727268 507.47406 49.350029 c +510.35175 49.551254 l +510.26999 50.00238 510.15991 50.335033 510.02164 50.54921 c +509.7709 50.933704 509.38412 51.107666 508.8613 51.07111 c +508.34296 51.034863 507.96356 50.777634 507.72284 50.299385 c +h +512.94281 45.620865 m +513.36273 45.691338 513.64319 45.796608 513.78412 45.936672 c +513.92511 46.076729 513.98242 46.335423 513.95605 46.712753 c +513.49011 53.375195 l +513.46918 53.675251 513.42969 53.880344 513.3717 53.990501 c +513.2674 54.175083 513.07666 54.257683 512.79938 54.238289 c +512.73572 54.233837 512.66687 54.222176 512.59277 54.203285 c +512.51874 54.184402 512.42578 54.157352 512.31409 54.122124 c +512.29834 54.347164 l +512.90057 54.553741 513.62415 54.82362 514.46887 55.156796 c +514.50067 55.159019 514.52087 55.146729 514.52966 55.119926 c +514.53833 55.093128 514.5459 55.03426 514.55225 54.94334 c +515.12396 46.767017 l +515.15167 46.371494 515.23773 46.120548 515.3822 46.014156 c +515.52673 45.907757 515.81378 45.8536 516.24335 45.851662 c +516.25671 45.660717 l +512.95618 45.42992 l +h +520.15381 47.454514 m +520.01868 46.837467 519.7995 46.248802 519.49609 45.688511 c +519.17688 45.090572 518.73462 44.522858 518.16925 43.985359 c +517.79657 43.630379 517.48077 43.377586 517.22174 43.22699 c +517.07654 43.44297 l +517.73944 44.023838 518.21289 44.602867 518.49683 45.180069 c +519.00104 46.20211 519.19666 47.520058 519.0838 49.133968 c +518.99255 50.438732 518.78613 51.495575 518.46466 52.30455 c +518.01465 53.44717 517.28442 54.318932 516.27399 54.919827 c +516.43549 55.157261 l +517.1817 54.807423 517.8924 54.249519 518.56726 53.483528 c +519.60443 52.304306 520.17719 50.94186 520.28528 49.396145 c +520.33264 48.718758 520.28876 48.071552 520.15381 47.454514 c +h +521.20062 46.006432 m +f +0.99756408 0.069756471 -0.069756471 0.99756408 42.211494 0.76409888 cm +92.400002 577.20001 m +92.400002 67.199997 l +825 67.199997 l +825 577.20001 l +92.400002 577.20001 l +h +92.400002 577.20001 m +S +1 0 0 sc +625.54999 168.14999 m +625.54999 168.14999 l +623.54999 172.39999 l +621.5 175.60001 l +620.5 178.75 l +618.45001 181.95 l +617.45001 186.2 l +616.40002 189.39999 l +614.40002 193.64999 l +613.34998 196.85001 l +612.34998 200 l +611.34998 204.25 l +610.29999 207.45 l +608.25 211.7 l +607.25 214.89999 l +605.20001 219.14999 l +602.15002 223.39999 l +599.09998 228.7 l +596.04999 232.95 l +593 237.2 l +589.95001 242.5 l +586.90002 246.75 l +583.84998 252.10001 l +580.79999 257.39999 l +578.75 261.64999 l +576.75 265.89999 l +575.70001 270.14999 l +574.70001 274.39999 l +572.65002 278.64999 l +571.65002 283.95001 l +570.65002 288.20001 l +569.59998 291.39999 l +568.59998 296.70001 l +566.54999 302 l +565.54999 306.25 l +565.54999 307.35001 l +566.54999 307.35001 l +566.54999 308.39999 l +566.54999 309.45001 l +566.54999 312.64999 l +567.54999 310.5 l +565.54999 312.64999 l +565.54999 313.70001 l +568.59998 313.70001 l +567.54999 314.75 l +563.5 313.70001 l +566.54999 314.75 l +566.54999 314.75 l +562.5 314.75 l +562.5 314.75 l +562.5 314.75 l +559.45001 314.75 l +555.34998 314.75 l +552.29999 315.85001 l +549.25 315.85001 l +547.20001 315.85001 l +544.15002 316.89999 l +542.15002 316.89999 l +539.09998 316.89999 l +537.04999 316.89999 l +534 316.89999 l +531.95001 316.89999 l +529.95001 317.95001 l +527.90002 317.95001 l +S +527.90002 317.95001 m +524.84998 317.95001 l +521.79999 317.95001 l +519.75 317.95001 l +515.70001 317.95001 l +512.65002 316.89999 l +507.54999 316.89999 l +503.45001 315.85001 l +500.39999 315.85001 l +494.29999 312.64999 l +491.25 310.5 l +486.14999 309.45001 l +482.10001 306.25 l +477 304.14999 l +471.95001 300.95001 l +467.85001 297.75 l +463.79999 293.5 l +460.75 290.35001 l +457.70001 287.14999 l +453.60001 283.95001 l +450.54999 281.85001 l +446.5 278.64999 l +443.45001 275.45001 l +440.39999 274.39999 l +436.29999 272.25 l +432.25 271.20001 l +428.20001 269.10001 l +424.10001 268 l +419 265.89999 l +414.95001 264.85001 l +411.89999 262.70001 l +406.79999 261.64999 l +400.70001 258.45001 l +397.64999 256.35001 l +392.54999 253.14999 l +388.5 249.95 l +384.39999 246.75 l +381.35001 243.60001 l +377.29999 240.39999 l +373.25 237.2 l +S +0 0 0 sc +92.400002 577.20001 m +92.400002 67.199997 l +825 67.199997 l +825 577.20001 l +92.400002 577.20001 l +h +92.400002 577.20001 m +S +Q +0 i +/Cs3 SC +0.64349812 0.64019811 0.64679807 sc +q +0 0 886 652 rc +110.60001 371.39999 m +843 371.39999 l +843 355.89999 l +110.60001 355.89999 l +h +110.60001 371.39999 m +f +1 J +1 j +0.60000002 i +/Cs1 SC +0 0 0 sc +1 0 0 -1 -423 1152 cm +533.60004 780.60004 m +1266 780.60004 l +1266 796.10004 l +533.60004 796.10004 l +h +533.60004 780.60004 m +S +ep +end diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaBasics.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaBasics.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,1 @@ +module AgdaBasics where diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaInterface.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaInterface.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,35 @@ +open import Level renaming (suc to succ ; zero to Zero ) +module AgdaInterface where + +data Maybe {n : Level } (a : Set n) : Set n where + Nothing : Maybe a + Just : a @$\rightarrow$@ Maybe a + +record StackMethods {n m : Level } (a : Set n ) {t : Set m }(stackImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where + field + push : stackImpl @$\rightarrow$@ a @$\rightarrow$@ (stackImpl @$\rightarrow$@ t) @$\rightarrow$@ t + pop : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + pop2 : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + get : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + get2 : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + clear : stackImpl @$\rightarrow$@ (stackImpl @$\rightarrow$@ t) @$\rightarrow$@ t +open StackMethods + +record Stack {n m : Level } (a : Set n ) {t : Set m } (si : Set n ) : Set (m Level.@$\sqcup$@ n) where + field + stack : si + stackMethods : StackMethods {n} {m} a {t} si + pushStack : a @$\rightarrow$@ (Stack a si @$\rightarrow$@ t) @$\rightarrow$@ t + pushStack d next = push (stackMethods ) (stack ) d (\s1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods } )) + popStack : (Stack a si @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + popStack next = pop (stackMethods ) (stack ) (\s1 d1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods }) d1 ) + pop2Stack : (Stack a si @$\rightarrow$@ Maybe a @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + pop2Stack next = pop2 (stackMethods ) (stack ) (\s1 d1 d2 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods }) d1 d2) + getStack : (Stack a si @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + getStack next = get (stackMethods ) (stack ) (\s1 d1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods }) d1 ) + get2Stack : (Stack a si @$\rightarrow$@ Maybe a @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + get2Stack next = get2 (stackMethods ) (stack ) (\s1 d1 d2 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods }) d1 d2) + clearStack : (Stack a si @$\rightarrow$@ t) @$\rightarrow$@ t + clearStack next = clear (stackMethods ) (stack ) (\s1 @$\rightarrow$@ next (record {stack = s1 ; stackMethods = stackMethods } )) + +open Stack diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaSingleLinkedStack.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaSingleLinkedStack.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,63 @@ +singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ StackMethods {n} {m} a {t} (SingleLinkedStack a) +singleLinkedStackSpec = record { +push = pushSingleLinkedStack +; pop = popSingleLinkedStack +; pop2 = pop2SingleLinkedStack +; get = getSingleLinkedStack +; get2 = get2SingleLinkedStack +; clear = clearSingleLinkedStack +} + +createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ Stack {n} {m} a {t} (SingleLinkedStack a) +createSingleLinkedStack = record { +stack = emptySingleLinkedStack ; +stackMethods = singleLinkedStackSpec +} + +-- Implementation + +pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} @$\rightarrow$@ SingleLinkedStack Data @$\rightarrow$@ Data @$\rightarrow$@ (Code : SingleLinkedStack Data @$\rightarrow$@ t) @$\rightarrow$@ t +pushSingleLinkedStack stack datum next = next stack1 + where + element = cons datum (top stack) + stack1 = record {top = Just element} + + +popSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t +popSingleLinkedStack stack cs with (top stack) +... | Nothing = cs stack Nothing +... | Just d = cs stack1 (Just data1) + where + data1 = datum d + stack1 = record { top = (next d) } + +pop2SingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t +pop2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack) +... | Nothing = cs stack Nothing Nothing +... | Just d = pop2SingleLinkedStack' {n} {m} stack cs + where + pop2SingleLinkedStack' : {n m : Level } {t : Set m } @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t + pop2SingleLinkedStack' stack cs with (next d) + ... | Nothing = cs stack Nothing Nothing + ... | Just d1 = cs (record {top = (next d1)}) (Just (datum d)) (Just (datum d1)) + + +getSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t +getSingleLinkedStack stack cs with (top stack) +... | Nothing = cs stack Nothing +... | Just d = cs stack (Just data1) + where + data1 = datum d + +get2SingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t +get2SingleLinkedStack {n} {m} {t} {a} stack cs with (top stack) +... | Nothing = cs stack Nothing Nothing +... | Just d = get2SingleLinkedStack' {n} {m} stack cs + where + get2SingleLinkedStack' : {n m : Level} {t : Set m } @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (Code : SingleLinkedStack a @$\rightarrow$@ (Maybe a) @$\rightarrow$@ (Maybe a) @$\rightarrow$@ t) @$\rightarrow$@ t + get2SingleLinkedStack' stack cs with (next d) + ... | Nothing = cs stack Nothing Nothing + ... | Just d1 = cs stack (Just (datum d)) (Just (datum d1)) + +clearSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ SingleLinkedStack a @$\rightarrow$@ (SingleLinkedStack a @$\rightarrow$@ t) @$\rightarrow$@ t +clearSingleLinkedStack stack next = next (record {top = Nothing}) diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaStackImpl.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaStackImpl.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,28 @@ +record SingleLinkedStack {n : Level } (a : Set n) : Set n where + field + top : Maybe (Element a) +open SingleLinkedStack + +pushSingleLinkedStack : {n m : Level } {t : Set m } {Data : Set n} @$\rightarrow$@ SingleLinkedStack Data @$\rightarrow$@ Data @$\rightarrow$@ (Code : SingleLinkedStack Data @$\rightarrow$@ t) @$\rightarrow$@ t +pushSingleLinkedStack stack datum next = next stack1 + where + element = cons datum (top stack) + stack1 = record {top = Just element} + +-- Basic stack implementations are specifications of a Stack + +singleLinkedStackSpec : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ StackMethods {n} {m} a {t} (SingleLinkedStack a) +singleLinkedStackSpec = record { + push = pushSingleLinkedStack + ; pop = popSingleLinkedStack + ; pop2 = pop2SingleLinkedStack + ; get = getSingleLinkedStack + ; get2 = get2SingleLinkedStack + ; clear = clearSingleLinkedStack + } + +createSingleLinkedStack : {n m : Level } {t : Set m } {a : Set n} @$\rightarrow$@ Stack {n} {m} a {t} (SingleLinkedStack a) +createSingleLinkedStack = record { + stack = emptySingleLinkedStack ; + stackMethods = singleLinkedStackSpec + } diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaStackSomeState.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaStackSomeState.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,6 @@ +stackInSomeState : {l m : Level } {D : Set l} {t : Set m } (s : SingleLinkedStack D ) @$\rightarrow$@ Stack {l} {m} D {t} ( SingleLinkedStack D ) +stackInSomeState s = record { stack = s ; stackMethods = singleLinkedStackSpec } + +push@$\rightarrow$@push@$\rightarrow$@pop2 : {l : Level } {D : Set l} (x y : D ) (s : SingleLinkedStack D ) @$\rightarrow$@ pushStack (stackInSomeState s) x (\s1 @$\rightarrow$@ pushStack s1 y (\s2 @$\rightarrow$@ pop2Stack s2 (\s3 y1 x1 @$\rightarrow$@ + (Just x @$\equiv$@ x1) ∧ (Just y @$\equiv$@ y1)))) +push@$\rightarrow$@push@$\rightarrow$@pop2 {l} {D} x y s = record { pi1 = refl ; pi2 = refl } diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaStackTest.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaStackTest.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,22 @@ +-- after push 1 and 2, pop2 get 1 and 2 + +testStack02 : {m : Level } @$\rightarrow$@ ( Stack @$\mathbb{N}$@ (SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ Bool {m} ) @$\rightarrow$@ Bool {m} +testStack02 cs = pushStack createSingleLinkedStack 1 (\s @$\rightarrow$@ pushStack s 2 cs) + + +testStack031 : (d1 d2 : $\mathbb{N}$ ) @$\rightarrow$@ Bool {Zero} +testStack031 2 1 = True +testStack031 _ _ = False + +testStack032 : (d1 d2 : Maybe @$\mathbb{N}$@) @$\rightarrow$@ Bool {Zero} +testStack032 (Just d1) (Just d2) = testStack031 d1 d2 +testStack032 _ _ = False + +testStack03 : {m : Level } @$\rightarrow$@ Stack @$\mathbb{N}$@ (SingleLinkedStack @$\mathbb{N}$@) @$\rightarrow$@ ((Maybe @$\mathbb{N}$@) @$\rightarrow$@ (Maybe @$\mathbb{N}$@) @$\rightarrow$@ Bool {m} ) @$\rightarrow$@ Bool {m} +testStack03 s cs = pop2Stack s (\s d1 d2 @$\rightarrow$@ cs d1 d2 ) + +testStack04 : Bool +testStack04 = testStack02 (\s @$\rightarrow$@ testStack03 s testStack032) + +testStack05 : testStack04 @$\equiv$@ True +testStack05 = refl diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaTree.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaTree.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,17 @@ +record TreeMethods {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where + field + putImpl : treeImpl @$\rightarrow$@ a @$\rightarrow$@ (treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t + getImpl : treeImpl @$\rightarrow$@ (treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t +open TreeMethods + +record Tree {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where + field + tree : treeImpl + treeMethods : TreeMethods {n} {m} {a} {t} treeImpl + putTree : a @$\rightarrow$@ (Tree treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t + putTree d next = putImpl (treeMethods ) tree d (\t1 @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} )) + getTree : (Tree treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + getTree next = getImpl (treeMethods ) tree (\t1 d @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} ) d ) + +open Tree + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaTreeDebug.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaTreeDebug.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,15 @@ +test31 = putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (createEmptyRedBlackTree@$\mathbb{N}$@ @$\mathbb{N}$@ ) 1 1 + $ \t @$\rightarrow$@ putTree1 t 2 2 + $ \t @$\rightarrow$@ putTree1 t 3 3 + $ \t @$\rightarrow$@ putTree1 t 4 4 + $ \t @$\rightarrow$@ getRedBlackTree t 4 + $ \t x @$\rightarrow$@ x + +-- Just +-- (record +-- { key = 4 +-- ; value = 4 +-- ; right = Nothing +-- ; left = Nothing +-- ; color = Red +-- }) diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaTreeImpl.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaTreeImpl.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,47 @@ +record TreeMethods {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where + field + putImpl : treeImpl @$\rightarrow$@ a @$\rightarrow$@ (treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t + getImpl : treeImpl @$\rightarrow$@ (treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t +open TreeMethods + +record Tree {n m : Level } {a : Set n } {t : Set m } (treeImpl : Set n ) : Set (m Level.@$\sqcup$@ n) where + field + tree : treeImpl + treeMethods : TreeMethods {n} {m} {a} {t} treeImpl + putTree : a @$\rightarrow$@ (Tree treeImpl @$\rightarrow$@ t) @$\rightarrow$@ t + putTree d next = putImpl (treeMethods ) tree d (\t1 @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} )) + getTree : (Tree treeImpl @$\rightarrow$@ Maybe a @$\rightarrow$@ t) @$\rightarrow$@ t + getTree next = getImpl (treeMethods ) tree (\t1 d @$\rightarrow$@ next (record {tree = t1 ; treeMethods = treeMethods} ) d ) +open Tree + +record Node {n : Level } (a k : Set n) : Set n where + inductive + field + key : k + value : a + right : Maybe (Node a k) + left : Maybe (Node a k) + color : Color {n} +open Node + +leafNode : {n : Level } {a k : Set n} @$\rightarrow$@ k @$\rightarrow$@ a @$\rightarrow$@ Node a k +leafNode k1 value = record { + key = k1 ; + value = value ; + right = Nothing ; + left = Nothing ; + color = Red + } +record RedBlackTree {n m : Level } {t : Set m} (a k : Set n) : Set (m Level.@$\sqcup$@ n) where + field + root : Maybe (Node a k) + nodeStack : SingleLinkedStack (Node a k) + compare : k @$\rightarrow$@ k @$\rightarrow$@ CompareResult {n} +open RedBlackTree + +putRedBlackTree : {n m : Level } {a k : Set n} {t : Set m} @$\rightarrow$@ RedBlackTree {n} {m} {t} a k @$\rightarrow$@ k @$\rightarrow$@ a @$\rightarrow$@ (RedBlackTree {n} {m} {t} a k @$\rightarrow$@ t) @$\rightarrow$@ t +putRedBlackTree {n} {m} {a} {k} {t} tree k1 value next with (root tree) +... | Nothing = next (record tree {root = Just (leafNode k1 value) }) +... | Just n2 = clearSingleLinkedStack (nodeStack tree) (\ s @$\rightarrow$@ findNode tree s (leafNode k1 value) n2 (\ tree1 s n1 @$\rightarrow$@ insertNode tree1 s n1 next)) + +-- 以下省略 diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/AgdaTreeProof.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/AgdaTreeProof.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,34 @@ +redBlackInSomeState : { m : Level } (a : Set Level.zero) (n : Maybe (Node a @$\mathbb{N}$@)) {t : Set m} @$\rightarrow$@ RedBlackTree {Level.zero} {m} {t} a @$\mathbb{N}$@ +redBlackInSomeState {m} a n {t} = record { root = n ; nodeStack = emptySingleLinkedStack ; compare = compare2 } + +putTest1 :{ m : Level } (n : Maybe (Node @$\mathbb{N}$@ @$\mathbb{N}$@)) + @$\rightarrow$@ (k : @$\mathbb{N}$@) (x : @$\mathbb{N}$@) + @$\rightarrow$@ putTree1 {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} (redBlackInSomeState {_} @$\mathbb{N}$@ n {Set Level.zero}) k x + (\ t @$\rightarrow$@ getRedBlackTree t k (\ t x1 @$\rightarrow$@ check2 x1 x @$\equiv$@ True)) +putTest1 n k x with n +... | Just n1 = lemma2 ( record { top = Nothing } ) + where + lemma2 : (s : SingleLinkedStack (Node @$\mathbb{N}$@ @$\mathbb{N}$@) ) @$\rightarrow$@ putTree1 (record { root = Just n1 ; nodeStack = s ; compare = compare2 }) k x (λ t → + GetRedBlackTree.checkNode t k (λ t@$\text{1}$@ x1 → check2 x1 x @$\equiv$@ True) (root t)) + lemma2 s with compare2 k (key n1) + ... | EQ = lemma3 {!!} + where + lemma3 : compare2 k (key n1) @$\equiv$@ EQ @$\rightarrow$@ getRedBlackTree {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} {Set Level.zero} ( record { root = Just ( record { + key = key n1 ; value = x ; right = right n1 ; left = left n1 ; color = Black + } ) ; nodeStack = s ; compare = λ x@$\text{1}$@ y → compare2 x@$\text{1}$@ y } ) k ( \ t x1 @$\rightarrow$@ check2 x1 x @$\equiv$@ True) + lemma3 eq with compare2 x x | putTest1Lemma2 x + ... | EQ | refl with compare2 k (key n1) | eq + ... | EQ | refl with compare2 x x | putTest1Lemma2 x + ... | EQ | refl = refl + ... | GT = {!!} + ... | LT = {!!} + +... | Nothing = lemma1 + where + lemma1 : getRedBlackTree {_} {_} {@$\mathbb{N}$@} {@$\mathbb{N}$@} {Set Level.zero} ( record { root = Just ( record { + key = k ; value = x ; right = Nothing ; left = Nothing ; color = Red + } ) ; nodeStack = record { top = Nothing } ; compare = λ x@$\text{1}$@ y → compare2 x@$\text{1}$@ y } ) k + ( \ t x1 @$\rightarrow$@ check2 x1 x @$\equiv$@ True) + lemma1 with compare2 k k | putTest1Lemma2 k + ... | EQ | refl with compare2 x x | putTest1Lemma2 x + ... | EQ | refl = refl diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/CodeSegment.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/CodeSegment.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,2 @@ +data CodeSegment {l1 l2 : Level} (I : Set l1) (O : Set l2) : Set (l @$\sqcup$@ l1 @$\sqcup$@ l2) where + cs : (I @$\rightarrow$@ O) @$\rightarrow$@ CodeSegment I O diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/DataSegment.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/DataSegment.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +record ds0 : Set where + field + a : Int + b : Int + +record ds1 : Set where + field + c : Int diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/Goto.agda.replaced --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/Goto.agda.replaced Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,4 @@ +goto : {l1 l2 : Level} {I : Set l1} {O : Set l2} + @$\rightarrow$@ CodeSegment I O @$\rightarrow$@ I @$\rightarrow$@ O +goto (cs b) i = b i + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/MetaGear.graffle Binary file Paper/pic/MetaGear.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/MetaGear.pdf Binary file Paper/pic/MetaGear.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/MetaGear.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/MetaGear.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./MetaGear.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 792 532 +%%HiResBoundingBox: 0.000000 0.000000 792.000000 532.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/cbc-hoare.pdf Binary file Paper/pic/cbc-hoare.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/cbc-hoare.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/cbc-hoare.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./cbc-hoare.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 580 175 +%%HiResBoundingBox: 0.000000 0.000000 580.000000 175.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/cbc-subtype.pdf Binary file Paper/pic/cbc-subtype.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/cbc-subtype.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/cbc-subtype.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./cbc-subtype.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 1084 281 +%%HiResBoundingBox: 0.000000 0.000000 1084.000000 281.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/cbc_goto.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/cbc_goto.graffle Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,1037 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle6 + 167.2.0.244490 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {558.99997329711914, 783}} + Class + SolidGraphic + ID + 2 + Style + + stroke + + Draws + NO + + + + BaseZoom + 0 + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2011-11-12 11:03:25 +0000 + Creator + Nobuyasu Oshiro + DisplayScale + 1 in = 1.00000 in + GraphDocumentVersion + 12 + GraphicsList + + + Bounds + {{315.5, 89.625}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 32 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + Bounds + {{315.5, 171}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 31 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + Bounds + {{190.20312000000001, 167}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 30 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + Bounds + {{405.93358999999998, 125}, {54, 18}} + Class + ShapedGraphic + ID + 29 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + AllowLabelDrop + + Class + LineGraphic + ID + 28 + Points + + {412.93358999999998, 143.02043} + {462.43358999999998, 143} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.4285709857940674 + Legacy + + TailArrow + 0 + TailScale + 0.5 + + + + + Bounds + {{90, 126}, {54, 18}} + Class + ShapedGraphic + ID + 27 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + Bounds + {{252, 134.3125}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 26 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + AllowLabelDrop + + Class + LineGraphic + Head + + ID + 3 + + ID + 23 + Points + + {97, 144.03550999999999} + {146.49998746293761, 144.0150711098278} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + HeadScale + 1.4285709857940674 + Legacy + + TailArrow + 0 + TailScale + 0.5 + + + + + Class + LineGraphic + Head + + ID + 5 + + ID + 11 + Points + + {307.06832644961662, 99.005708590904717} + {348.41386755785959, 126.00973315833174} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 1 + + + + Class + LineGraphic + Head + + ID + 5 + + ID + 38 + Points + + {307.26186045457405, 188.16336426740673} + {348.23813954515032, 161.83663573235037} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 34 + + + + Class + LineGraphic + Head + + ID + 34 + + ID + 37 + Points + + {210.76185637532367, 161.83663311602177} + {251.73814361460188, 188.16336689285151} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 8 + Points + + {210.56036004631343, 125.98738390291257} + {251.89396917594394, 98.972989609515338} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 3 + + + + Class + LineGraphic + Head + + ID + 34 + + ID + 36 + Points + + {293.55569627859614, 106.37834050302079} + {315.5, 146} + {294.53436892560063, 180.94271845733229} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 1 + + + + Class + LineGraphic + Head + + ID + 1 + + ID + 35 + Points + + {263.99039783562887, 181.10804590903402} + {239, 141} + {262.95578718585557, 105.50994490984354} + + Style + + shadow + + Draws + NO + + stroke + + HeadArrow + FilledArrow + Legacy + + LineType + 1 + TailArrow + 0 + + + Tail + + ID + 34 + + + + Bounds + {{340, 117}, {72, 54}} + Class + ShapedGraphic + ID + 5 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment\ +D} + VerticalPad + 0.0 + + + + Bounds + {{243.5, 179}, {72, 54}} + Class + ShapedGraphic + ID + 34 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment\ +C} + VerticalPad + 0.0 + + + + Bounds + {{147, 117}, {72, 54}} + Class + ShapedGraphic + ID + 3 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment A} + VerticalPad + 0.0 + + + + Bounds + {{243.5, 54}, {72, 54}} + Class + ShapedGraphic + ID + 1 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 code segment\ +B} + VerticalPad + 0.0 + + + + Bounds + {{197.56640999999999, 98.625}, {45.933593999999999, 18.375}} + Class + ShapedGraphic + ID + 25 + Magnets + + {1, 1} + {1, -1} + {-1, -1} + {-1, 1} + {0, 1} + {0, -1} + {1, 0} + {-1, 0} + {-0.5, -0.233518} + {-0.49144199, 0.26006298999999999} + {0.50711799000000002, -0.22408600000000001} + {0.50711799000000002, 0.26717900999999999} + {-0.27430999, -0.47402799000000001} + {0.27977999999999997, -0.47847801000000001} + {0.29393801000000003, 0.54304397000000004} + {-0.28623198999999999, 0.55380397999999997} + + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg1252\cocoartf1348\cocoasubrtf170 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc + +\f0\fs24 \cf0 goto} + VerticalPad + 0.0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + Layer 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoLineLength + 0.20000000298023224 + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2015-10-27 21:38:00 +0000 + Modifier + Tatsuki IHA + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSHorizonalPagination + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSLeftMargin + + float + 18 + + NSPaperSize + + size + {594.99997329711914, 842} + + NSPrintReverseOrientation + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + Canvas 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + Expanded_Canvases + + Frame + {{4, -0}, {1913, 983}} + ShowInfo + + ShowRuler + + Sidebar + + SidebarWidth + 200 + TopSlabHeight + 250 + VisibleRegion + {{-420, -21}, {1399, 826}} + Zoom + 1 + ZoomValues + + + Canvas 1 + 1 + 1 + + + + + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/cbc_goto.pdf Binary file Paper/pic/cbc_goto.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/cbc_goto.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/cbc_goto.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./cbc_goto.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 393 201 +%%HiResBoundingBox: 0.000000 0.000000 393.000000 201.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codeGear_dataGear.graffle Binary file Paper/pic/codeGear_dataGear.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codeGear_dataGear.pdf Binary file Paper/pic/codeGear_dataGear.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codeGear_dataGear.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/codeGear_dataGear.svg Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codeGear_dataGear.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/codeGear_dataGear.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./codeGear_dataGear.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 535 427 +%%HiResBoundingBox: 0.000000 0.000000 535.000000 427.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codeGear_dataGear_dependency.graffle Binary file Paper/pic/codeGear_dataGear_dependency.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codeGear_dataGear_dependency.pdf Binary file Paper/pic/codeGear_dataGear_dependency.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codeGear_dataGear_dependency.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/codeGear_dataGear_dependency.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./codeGear_dataGear_dependency.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 535 247 +%%HiResBoundingBox: 0.000000 0.000000 535.000000 247.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codesegment.pdf Binary file Paper/pic/codesegment.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codesegment.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/codesegment.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./codesegment.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 305 85 +%%HiResBoundingBox: 0.000000 0.000000 305.000000 85.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codesegment2.pdf Binary file Paper/pic/codesegment2.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/codesegment2.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/codesegment2.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./codesegment2.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 393 201 +%%HiResBoundingBox: 0.000000 0.000000 393.000000 201.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/csds.pdf Binary file Paper/pic/csds.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/csds.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/csds.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./csds.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 580 76 +%%HiResBoundingBox: 0.000000 0.000000 580.000000 76.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/factorial.pdf Binary file Paper/pic/factorial.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/factorial.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/factorial.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./factorial.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 296 220 +%%HiResBoundingBox: 0.000000 0.000000 296.000000 220.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/funcLoop.pdf Binary file Paper/pic/funcLoop.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/funcLoop.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/funcLoop.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./funcLoop.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 647 168 +%%HiResBoundingBox: 0.000000 0.000000 647.000000 168.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/funcLoopinAutomata.pdf Binary file Paper/pic/funcLoopinAutomata.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/funcLoopinAutomata.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/funcLoopinAutomata.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./funcLoopinAutomata.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 489 473 +%%HiResBoundingBox: 0.000000 0.000000 489.000000 473.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/gears-meta.pdf Binary file Paper/pic/gears-meta.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/gears-meta.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/gears-meta.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./gears-meta.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 653 243 +%%HiResBoundingBox: 0.000000 0.000000 653.000000 243.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/gears_structure.graffle Binary file Paper/pic/gears_structure.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/gears_structure.pdf Binary file Paper/pic/gears_structure.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/gears_structure.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/gears_structure.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./gears_structure.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 713 418 +%%HiResBoundingBox: 0.000000 0.000000 713.000000 418.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/gearsos.graffle Binary file Paper/pic/gearsos.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/gearsos.pdf Binary file Paper/pic/gearsos.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/gearsos.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/gearsos.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./gearsos.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 1174 1004 +%%HiResBoundingBox: 0.000000 0.000000 1174.000000 1004.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/generate_context.graffle Binary file Paper/pic/generate_context.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/generate_context.pdf Binary file Paper/pic/generate_context.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/generate_context.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/generate_context.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./generate_context.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 508 408 +%%HiResBoundingBox: 0.000000 0.000000 508.000000 408.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/generate_context2.pdf Binary file Paper/pic/generate_context2.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/generate_context2.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/generate_context2.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./generate_context2.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 706 355 +%%HiResBoundingBox: 0.000000 0.000000 706.000000 355.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/generate_context3.pdf Binary file Paper/pic/generate_context3.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/generate_context3.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/generate_context3.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./generate_context3.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 706 274 +%%HiResBoundingBox: 0.000000 0.000000 706.000000 274.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/generate_context_2.graffle Binary file Paper/pic/generate_context_2.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/goto.pdf Binary file Paper/pic/goto.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/goto.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/goto.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./goto.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 305 85 +%%HiResBoundingBox: 0.000000 0.000000 305.000000 85.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/hoare-logic.pdf Binary file Paper/pic/hoare-logic.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/hoare-logic.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/hoare-logic.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./hoare-logic.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 580 76 +%%HiResBoundingBox: 0.000000 0.000000 580.000000 76.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta-hierarchy.pdf Binary file Paper/pic/meta-hierarchy.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta-hierarchy.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/meta-hierarchy.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./meta-hierarchy.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 832 283 +%%HiResBoundingBox: 0.000000 0.000000 832.000000 283.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta.pdf Binary file Paper/pic/meta.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/meta.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./meta.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 958 148 +%%HiResBoundingBox: 0.000000 0.000000 958.000000 148.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/metaCS.pdf Binary file Paper/pic/metaCS.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/metaCS.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/metaCS.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./metaCS.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 31 511 515 732 +%%HiResBoundingBox: 30.601520 511.100000 515.413800 732.012800 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta_cg_dg.graffle Binary file Paper/pic/meta_cg_dg.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta_cg_dg.pdf Binary file Paper/pic/meta_cg_dg.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta_cg_dg.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/meta_cg_dg.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./meta_cg_dg.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 2 302 608 522 +%%HiResBoundingBox: 2.019531 302.382800 608.000000 522.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta_gear.graffle Binary file Paper/pic/meta_gear.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta_gear.pdf Binary file Paper/pic/meta_gear.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/meta_gear.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/meta_gear.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./meta_gear.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 788 229 +%%HiResBoundingBox: 0.000000 0.000000 788.000000 229.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/metameta.pdf Binary file Paper/pic/metameta.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/metameta.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/metameta.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./metameta.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 472 184 +%%HiResBoundingBox: 0.000000 0.000000 472.000000 184.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/modus-ponens.pdf Binary file Paper/pic/modus-ponens.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/modus-ponens.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/modus-ponens.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./modus-ponens.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 96 684 500 799 +%%HiResBoundingBox: 96.082030 683.554700 499.886700 799.296900 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/non-destructive-rbtree.pdf Binary file Paper/pic/non-destructive-rbtree.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/non-destructive-rbtree.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/non-destructive-rbtree.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./non-destructive-rbtree.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 559 248 +%%HiResBoundingBox: 0.000000 0.000000 559.000000 248.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/persistent_date_tree.graffle Binary file Paper/pic/persistent_date_tree.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/persistent_date_tree.pdf Binary file Paper/pic/persistent_date_tree.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/persistent_date_tree.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/persistent_date_tree.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./persistent_date_tree.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 773 374 +%%HiResBoundingBox: 0.000000 0.000000 773.000000 374.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/persistent_date_tree_2.graffle Binary file Paper/pic/persistent_date_tree_2.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/persistent_date_tree_2.pdf Binary file Paper/pic/persistent_date_tree_2.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/persistent_date_tree_2.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/persistent_date_tree_2.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./persistent_date_tree_2.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 736 271 +%%HiResBoundingBox: 0.000000 0.000000 736.000000 271.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/put.pdf Binary file Paper/pic/put.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/put.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/put.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./put.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 868 130 +%%HiResBoundingBox: 0.000000 0.000000 868.000000 130.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/rbtree.pdf Binary file Paper/pic/rbtree.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/rbtree.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/rbtree.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./rbtree.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 562 274 +%%HiResBoundingBox: 0.000000 0.000000 562.000000 274.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/ryukyu.pdf Binary file Paper/pic/ryukyu.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/ryukyu.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/ryukyu.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./ryukyu.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 595 842 +%%HiResBoundingBox: 0.000000 0.000000 595.000000 842.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/subtype-arg.pdf Binary file Paper/pic/subtype-arg.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/subtype-arg.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/subtype-arg.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./subtype-arg.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 1084 281 +%%HiResBoundingBox: 0.000000 0.000000 1084.000000 281.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/subtype-return.pdf Binary file Paper/pic/subtype-return.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/subtype-return.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/subtype-return.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./subtype-return.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 1084 281 +%%HiResBoundingBox: 0.000000 0.000000 1084.000000 281.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/taskManager.graffle Binary file Paper/pic/taskManager.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/taskManager.pdf Binary file Paper/pic/taskManager.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/taskManager.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/taskManager.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./taskManager.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 1021 459 +%%HiResBoundingBox: 0.000000 0.000000 1021.000000 459.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/twice_640.pdf Binary file Paper/pic/twice_640.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/twice_640.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/twice_640.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./twice_640.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 360 216 +%%HiResBoundingBox: 0.000000 0.000000 360.000000 216.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/verification.graffle Binary file Paper/pic/verification.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/verification.pdf Binary file Paper/pic/verification.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/verification.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/verification.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./verification.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 478 204 +%%HiResBoundingBox: 0.000000 0.000000 478.000000 204.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/worker.graffle Binary file Paper/pic/worker.graffle has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/worker.pdf Binary file Paper/pic/worker.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/worker.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/worker.svg Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/pic/worker.xbb --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Paper/pic/worker.xbb Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,8 @@ +%%Title: ./worker.pdf +%%Creator: extractbb 20180217 +%%BoundingBox: 0 0 901 644 +%%HiResBoundingBox: 0.000000 0.000000 901.000000 644.000000 +%%PDFVersion: 1.3 +%%Pages: 1 +%%CreationDate: Wed Dec 12 18:19:49 2018 + diff -r 6e03fff298c5 -r df1552e4ac7a Paper/tecrep.pdf Binary file Paper/tecrep.pdf has changed diff -r 6e03fff298c5 -r df1552e4ac7a Paper/tecrep.tex --- a/Paper/tecrep.tex Tue Nov 13 22:53:20 2018 +0900 +++ b/Paper/tecrep.tex Wed Dec 12 18:44:19 2018 +0900 @@ -1,7 +1,9 @@ %% v3.1 [2018/04/18] %\documentclass[Proof,technicalreport]{ieicej} \documentclass[technicalreport]{ieicej} -%\usepackage{graphicx} + +\usepackage[dvipdfmx]{graphicx} +\usepackage{graphicx} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{textcomp} @@ -9,6 +11,35 @@ %\usepackage[fleqn]{amsmath} %\usepackage{amssymb} +\usepackage{listings} +\lstset{ + frame=single, + keepspaces=true, + stringstyle={\ttfamily}, + commentstyle={\ttfamily}, + identifierstyle={\ttfamily}, + keywordstyle={\ttfamily}, + basicstyle={\ttfamily}, + breaklines=true, + xleftmargin=0zw, + xrightmargin=0zw, + framerule=.2pt, + columns=[l]{fullflexible}, + numbers=left, + stepnumber=1, + numberstyle={\scriptsize}, + numbersep=1em, + language={}, + tabsize=4, + lineskip=-0.5zw, + inputencoding=utf8, + extendedchars=true, + escapechar={@} +} +\renewcommand{\lstlistingname}{Code} +\usepackage{caption} +\captionsetup[lstlisting]{font={small,tt}} + \def\IEICEJcls{\texttt{ieicej.cls}} \def\IEICEJver{3.1} \newcommand{\AmSLaTeX}{% @@ -24,11 +55,11 @@ %% and Communication Engineers} %% \esubtitle{Guide to the Technical Report and Template} \authorlist{ - \authorentry[@cr.ie.u-ryukyu.ac.jp]{外間 政尊}{Masataka Hokama}{1}% - \authorentry[@cr.ie.u-ryukyu.ac.jp]{河野 真治}{Shinji Kono}{2}% + \authorentry[masataka@cr.ie.u-ryukyu.ac.jp]{外間 政尊}{Masataka Hokama}{1}% + \authorentry[kono@cr.ie.u-ryukyu.ac.jp]{河野 真治}{Shinji Kono}{2}% } \affiliate[1]{琉球大学大学院理工学研究科情報工学専攻} - {Interdisciplinary Information Engineering, Graduate Sc k533 hool of Engineering and Science, University of the Ryukyus.} + {Interdisciplinary Information Engineering, Graduate School of Engineering and Science, University of the Ryukyus.} \affiliate[2]{琉球大学工学部情報工学科} {Information Engineering, University of the Ryukyus.} %\MailAddress{$\dagger$hanako@denshi.ac.jp, @@ -39,7 +70,7 @@ \end{jabstract} \begin{jkeyword} プログラミング言語, - 検証 + CbC, Gears OS, Agda %% あと他…? \end{jkeyword} %% \begin{eabstract} @@ -73,10 +104,88 @@ した証明を導入し、今まで行っていた証明との比較を 行う。 \section{GearsOS} -GearsOSについて +Gears OS は信頼性をノーマルレベルの計算に対して保証し、拡張性をメタレベルの計算で実現することを目標に開発している OSである。 + +Gears OS は処理の単位を Code Gear、データの単位を Data Gear と呼ばれる単位でプログラムを構成する。 +信頼性や拡張性はメタ計算として、通常の計算とは区別して記述する。 + \section{CodeGearとDataGear} -CodeGearとDataGearについて + +Gears OS ではプログラムとデータの単位として CodeGear、 DataGear を用いる。 Gear + は並列実行の単位、データ分割、 Gear 間の接続等になる。 +CodeGear はプログラムの処理そのもので、図\ref{fig:cgdg}で示しているように任意の数の +Input DataGear を参照し、処理が完了すると任意の数の Output DataGear に書き込む。 + +CodeGear 間の移動は継続を用いて行われる。継続は関数呼び出しとは異なり、呼び出し +た後に元のコードに戻らず、次の CodeGear へ継続を行う。これは、関数型プログラミングでは末尾関数呼び出しを行うことに相当する。 + +Gear では処理やデータ構造が CodeGear、 DataGear に閉じている。したがって、 +DataGear は Agda のデータ構造(data と record)で表現できる。 +CodeGear は Agda の CPS (Continuation Passing Style) で関数として表現することができる。 + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.3}{\includegraphics{pic/codeGear_dataGear.pdf}} + \end{center} + \caption{CodeGear と DataGear の関係} + \label{fig:cgdg} +\end{figure} + +また Gears OS 自体もこの Code Gear、Data Gear を用いた CbC(Continuation based C) で実装される。 +そのため、Gears OS の実装は Code Gear、Data Gear を用いたプログラミングスタイルの指標となる。 + +CodeGear は Agda では継続渡しで書かれた関数と等価である。 +継続は不定の型 (\verb+t+) を返す関数で表される。 +CodeGear 自体も同じ型 \verb+t+ を返す関数となる。 +例えば、 Stack への push を行う関数 pushStack は以下のような型を持つ。 + +\begin{lstlisting}[caption=pushStack の型,label=push-stack] + pushStack : a -> (Stack a si -> t) -> t +\end{lstlisting} + +\verb+pushStack+ が関数名で、コロンの後ろに型を記述する。 +最初の引数は Stack に格納される型\verb+a+ を持つ。 +二つ目の引数は継続であり、\verb+Stack a si+ (\verb+si+という実装を持つ\verb+a+を格納するStack)を受け取り不定の型\verb+t+を返す関数である。 +この CodeGear 自体は不定の型\verb+t+を返す。 + +GearsOS で CodeGear の性質を証明するには、 Agda で記述された CodeGear と +DataGear に対してメタ計算として証明を行う。証明すべき性質は、不定の型を持つ継続 +\verb+t+ に記述することができる。例えば、 Stack にある値\verb+x+をpushして、pop +すると \verb+ x'+ が取れてくる。\verb+Just x+ と\verb+Just x'+ は等しい必要があ +る。これは Agda では \verb+(Just x ≡ x' )+ と記述される。 +ここで Just とは Agda の以下のデータ構造である。 + +% \begin{verbatim} +\begin{lstlisting}[caption=data型の例:Maybe,label=maybe] +data Maybe {n : Level } (a : Set n) : Set n where + Nothing : Maybe a + Just : a -> Maybe a +\end{lstlisting} +% \end{verbatim} + +これは DataGear に相当し、\verb+Nothing+ と \verb+Just+ の二つの状態を保つ。 +pop した時に、 Stack が空であれば\verb+Nothing+ を返し、そうでなければ\verb+Just+ のついた返り値を返す。 + +この性質を Agda で表すと、以下のような型になる。 +Agda では証明すべき論理式は型で表される。 +継続部分に直接証明すべき性質を型として記述できる。 +Agda ではこの型に対応する$\lambda$項を与えると証明が完了したことになる。 + +\begin{lstlisting}[caption=pushとpop,label=push-pop] +push->pop : {l : Level} {D : Set l} (x : D ) + (s : SingleLinkedStack D) -> + pushStack (stackInSomeState s) + x (\s -> popStack s + ( \s3 x1 -> (Just x ≡ x1))) +\end{lstlisting} + +このように、CodeGear を Agda で記述し、継続部分に証明すべき性質を Agda で記述する。 + +GearsOS での記述は interface によってモジュール化される。 +よって、このモジュール化もAgda により記述する必要がある。 +CbC で記述された任意の CodeGear と Meta CodeGear が Agda にそのまま変換されるわけではないが、変換可能なように記述されると仮定する。 + \section{AgdaとGearsOS} Agda と GearsOS diff -r 6e03fff298c5 -r df1552e4ac7a ryokka-sigss.mm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ryokka-sigss.mm Wed Dec 12 18:44:19 2018 +0900 @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +