%!PS-Adobe-2.0
%%Creator: dvips(k) 5.991 Copyright 2011 Radical Eye Software
%%Title: main.dvi
%%CreationDate: Mon Sep 16 11:07:10 2013
%%Pages: 16
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: Times-Bold Times-Roman Times-Italic CMSY10 Courier
%%+ Symbol CMR10 Helvetica CMMI10 Courier-Oblique
%%DocumentPaperSizes: Letter
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -Ppdf -G0 -tletter main.dvi
%DVIPSParameters: dpi=8000
%DVIPSSource: TeX output 2013.09.16:0139
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S
/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3
def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90
rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0
N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop
false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A
length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{
BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat
{BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch
round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0
rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B
/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}
B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p
-3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{
0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
%%EndProcSet
%%BeginProcSet: alt-rule.pro 0 0
%!
% Patch by TVZ
% Makes dvips files draw rules with stroke rather than fill.
% Makes narrow rules more predictable at low resolutions
% after distilling to PDF.
% May have unknown consequences for very thick rules.
% Tested only with dvips 5.85(k).
TeXDict begin
/QV {
gsave newpath /ruleY X /ruleX X
Rx Ry gt
{ ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry }
{ ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx }
ifelse
setlinewidth 0 setlinecap stroke grestore
} bind def
end
%%EndProcSet
%%BeginProcSet: 8r.enc 0 0
% File 8r.enc TeX Base 1 Encoding Revision 2.0 2002-10-30
%
% @@psencodingfile@{
% author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry,
% W. Schmidt, P. Lehman",
% version = "2.0",
% date = "27nov06",
% filename = "8r.enc",
% email = "tex-fonts@@tug.org",
% docstring = "This is the encoding vector for Type1 and TrueType
% fonts to be used with TeX. This file is part of the
% PSNFSS bundle, version 9"
% @}
%
% The idea is to have all the characters normally included in Type 1 fonts
% available for typesetting. This is effectively the characters in Adobe
% Standard encoding, ISO Latin 1, Windows ANSI including the euro symbol,
% MacRoman, and some extra characters from Lucida.
%
% Character code assignments were made as follows:
%
% (1) the Windows ANSI characters are almost all in their Windows ANSI
% positions, because some Windows users cannot easily reencode the
% fonts, and it makes no difference on other systems. The only Windows
% ANSI characters not available are those that make no sense for
% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
% (173). quotesingle and grave are moved just because it's such an
% irritation not having them in TeX positions.
%
% (2) Remaining characters are assigned arbitrarily to the lower part
% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
%
% (3) Y&Y Lucida Bright includes some extra text characters; in the
% hopes that other PostScript fonts, perhaps created for public
% consumption, will include them, they are included starting at 0x12.
% These are /dotlessj /ff /ffi /ffl.
%
% (4) hyphen appears twice for compatibility with both ASCII and Windows.
%
% (5) /Euro was assigned to 128, as in Windows ANSI
%
% (6) Missing characters from MacRoman encoding incorporated as follows:
%
% PostScript MacRoman TeXBase1
% -------------- -------------- --------------
% /notequal 173 0x16
% /infinity 176 0x17
% /lessequal 178 0x18
% /greaterequal 179 0x19
% /partialdiff 182 0x1A
% /summation 183 0x1B
% /product 184 0x1C
% /pi 185 0x1D
% /integral 186 0x81
% /Omega 189 0x8D
% /radical 195 0x8E
% /approxequal 197 0x8F
% /Delta 198 0x9D
% /lozenge 215 0x9E
%
/TeXBase1Encoding [
% 0x00
/.notdef /dotaccent /fi /fl
/fraction /hungarumlaut /Lslash /lslash
/ogonek /ring /.notdef /breve
/minus /.notdef /Zcaron /zcaron
% 0x10
/caron /dotlessi /dotlessj /ff
/ffi /ffl /notequal /infinity
/lessequal /greaterequal /partialdiff /summation
/product /pi /grave /quotesingle
% 0x20
/space /exclam /quotedbl /numbersign
/dollar /percent /ampersand /quoteright
/parenleft /parenright /asterisk /plus
/comma /hyphen /period /slash
% 0x30
/zero /one /two /three
/four /five /six /seven
/eight /nine /colon /semicolon
/less /equal /greater /question
% 0x40
/at /A /B /C
/D /E /F /G
/H /I /J /K
/L /M /N /O
% 0x50
/P /Q /R /S
/T /U /V /W
/X /Y /Z /bracketleft
/backslash /bracketright /asciicircum /underscore
% 0x60
/quoteleft /a /b /c
/d /e /f /g
/h /i /j /k
/l /m /n /o
% 0x70
/p /q /r /s
/t /u /v /w
/x /y /z /braceleft
/bar /braceright /asciitilde /.notdef
% 0x80
/Euro /integral /quotesinglbase /florin
/quotedblbase /ellipsis /dagger /daggerdbl
/circumflex /perthousand /Scaron /guilsinglleft
/OE /Omega /radical /approxequal
% 0x90
/.notdef /.notdef /.notdef /quotedblleft
/quotedblright /bullet /endash /emdash
/tilde /trademark /scaron /guilsinglright
/oe /Delta /lozenge /Ydieresis
% 0xA0
/.notdef /exclamdown /cent /sterling
/currency /yen /brokenbar /section
/dieresis /copyright /ordfeminine /guillemotleft
/logicalnot /hyphen /registered /macron
% 0xB0
/degree /plusminus /twosuperior /threesuperior
/acute /mu /paragraph /periodcentered
/cedilla /onesuperior /ordmasculine /guillemotright
/onequarter /onehalf /threequarters /questiondown
% 0xC0
/Agrave /Aacute /Acircumflex /Atilde
/Adieresis /Aring /AE /Ccedilla
/Egrave /Eacute /Ecircumflex /Edieresis
/Igrave /Iacute /Icircumflex /Idieresis
% 0xD0
/Eth /Ntilde /Ograve /Oacute
/Ocircumflex /Otilde /Odieresis /multiply
/Oslash /Ugrave /Uacute /Ucircumflex
/Udieresis /Yacute /Thorn /germandbls
% 0xE0
/agrave /aacute /acircumflex /atilde
/adieresis /aring /ae /ccedilla
/egrave /eacute /ecircumflex /edieresis
/igrave /iacute /icircumflex /idieresis
% 0xF0
/eth /ntilde /ograve /oacute
/ocircumflex /otilde /odieresis /divide
/oslash /ugrave /uacute /ucircumflex
/udieresis /yacute /thorn /ydieresis
] def
%%EndProcSet
%%BeginProcSet: texps.pro 0 0
%!
TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
end
%%EndProcSet
%%BeginProcSet: special.pro 0 0
%!
TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
{userdict/md get type/dicttype eq{userdict begin md length 10 add md
maxlength ge{/md md dup length 20 add dict copy def}if end md begin
/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
save N userdict maxlength dict begin/magscale true def normalscale
currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix}N end
%%EndProcSet
TeXDict begin @defspecial
systemdict /pdfmark known{userdict /?pdfmark systemdict /exec get
put}{userdict /?pdfmark systemdict /pop get put userdict /pdfmark systemdict
/cleartomark get put}ifelse
/DvipsToPDF{72.27 mul Resolution div} def/PDFToDvips{72.27 div Resolution
mul} def/BPToDvips{72 div Resolution mul}def/BorderArrayPatch{[exch{dup
dup type/integertype eq exch type/realtype eq or{BPToDvips}if}forall]}def/HyperBorder
{1 PDFToDvips} def/H.V {pdf@hoff pdf@voff null} def/H.B {/Rect[pdf@llx
pdf@lly pdf@urx pdf@ury]} def/H.S {currentpoint HyperBorder add /pdf@lly
exch def dup DvipsToPDF 72 add /pdf@hoff exch def HyperBorder sub /pdf@llx
exch def} def/H.L {2 sub dup/HyperBasePt exch def PDFToDvips /HyperBaseDvips
exch def currentpoint HyperBaseDvips sub /pdf@ury exch def/pdf@urx
exch def} def/H.A {H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF
HyperBasePt sub sub /pdf@voff exch def} def/H.R {currentpoint HyperBorder
sub /pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint
exch pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def} def
/burl@stx null def /BU.S { /burl@stx null def } def /BU.SS { currentpoint
/burl@lly exch def /burl@llx exch def burl@stx null ne {burl@endx burl@llx
ne {BU.FL BU.S} if} if burl@stx null eq { burl@llx dup /burl@stx exch
def /burl@endx exch def burl@lly dup /burl@boty exch def /burl@topy
exch def } if burl@lly burl@boty gt {/burl@boty burl@lly def} if }
def /BU.SE { currentpoint /burl@ury exch def dup /burl@urx exch def
/burl@endx exch def burl@ury burl@topy lt {/burl@topy burl@ury def}
if } def /BU.E { BU.FL } def /BU.FL { burl@stx null ne {BU.DF} if }
def /BU.DF { BU.BB [ /H /I /Border [burl@border] /Color [burl@bordercolor]
/Action << /Subtype /URI /URI BU.L >> /Subtype /Link BU.B /ANN pdfmark
/burl@stx null def } def /BU.BB { burl@stx HyperBorder sub /burl@stx
exch def burl@endx HyperBorder add /burl@endx exch def burl@boty HyperBorder
add /burl@boty exch def burl@topy HyperBorder sub /burl@topy exch def
} def /BU.B { /Rect[burl@stx burl@boty burl@endx burl@topy] } def /eop
where { begin /@ldeopburl /eop load def /eop { SDict begin BU.FL end
@ldeopburl } def end } { /eop { SDict begin BU.FL end } def } ifelse
@fedspecial end
%%BeginFont: CMSY10
%!PS-AdobeFont-1.0: CMSY10 003.002
%%Title: CMSY10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMSY10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup
/UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMSY10 def
/FontBBox {-29 -960 1116 775 }readonly def
/UniqueID 5096651 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def
/FullName (CMSY10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 0 /minus put
dup 2 /multiply put
dup 3 /asteriskmath put
dup 25 /approxequal put
dup 33 /arrowright put
dup 48 /prime put
dup 91 /union put
dup 102 /braceleft put
dup 103 /braceright put
dup 106 /bar put
dup 112 /radical put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0
7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81
DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91
511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6
1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD
028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86
1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4
3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021
91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2
E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A
11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97
C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857
D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20
B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3
93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F
10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D
7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF
B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B
491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB
F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6
019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6
915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36
356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0
5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D
9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64
3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1
FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252
720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5
D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726
BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5
7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377
DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56
AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7
A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E
0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743
AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18
CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023
0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD
5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B
5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F
E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB
54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809
E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F
A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906
4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378
4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4
038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4
B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308
5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC
B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837
A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD
2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D
CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246
455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE
FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03
16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C
16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F
483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352
67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2
3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472
1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770
93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA
051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B
8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4
8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436
6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0
06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7
84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0
D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6
DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB
0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD
8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC
C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34
754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406
1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05
CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523
1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F
153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02
905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718
617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2
8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A
98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278
53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B
888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D
052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A
CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501
A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F
07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56
B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672
10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2
CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D
3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12
D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F
849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16
648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE
84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA
2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD
2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204
9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0
B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B
D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7
135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE
EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939
C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782
7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0
4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2
9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171
050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486
3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271
C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8
843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342
CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B
B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50
3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175
19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946
FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0
17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6
8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B
CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003
F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194
1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E
4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194
2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929
9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593
E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB
8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB
BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027
04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5
C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404
ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C
4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909
84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6
C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6
09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777
D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503
56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF
035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB
FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333
CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663
B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A
F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD
CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B
0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C
B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9
33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6
4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D
F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E
2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A
CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5
88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37
17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0
55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A
A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50
2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3
406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8
AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B
60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388
C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6
5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50
822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E
94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02
D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA
343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE
894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5
DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327
DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F
8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324
A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA
DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270
E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947
DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC
4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653
5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1
02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8
88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B1058
93FAF9435086F4932783C7D4837170DB0EA31A11EE76B1B9DFA42BD7AC6B7A02
60798C30DA069C1E3F3211861EA327F5E48E1F440F6ACFCD1FA8A7E239B78825
56FED1C49BCEC941D4BBFED805E0AFCFBC77850BD291FA4F8FE707CB4E8CBD1B
1EF055DBB7929E9666F539079840B5A6B6E1AF4FB0AB0CE7F517E28F67D1FC76
2965CD2C4EB718886E4FF6A9F8F6EFAF9552AD1D7CE47CC42473F8BBFD598652
5AF9535A2078DD3E501DF0241EEAC306DB1C2695D6DAFCD4F28DF3EEA1AF6EFF
5490E5C45D2E2FF381528AE3E23D323472F9DC5F32566CEECBBE3EDC5CB643AE
0E6AFFF1E130B88FDB0197F1ECCA581B102A8C283F3B0F9995EC08F0DF3CD45E
AC63D7202E2F23518545A75568CC03DD929EFF1F396331208B8544B26995F077
52052A37B16E0ED4A3681A84D170419B1D9D825F30DF959CEB4F91608B5FFB14
DA87DE71AD3A38D25C223885CC458832CED3E8BBF364FEA9AB4F10F66DAD31EE
BA3AEAFB08E148335ECDBACCFF7A4542F19FB5E7C2CB9B981FBB7495C8782D03
9F28DDF3B9130D3670F6A58773ED27D7BD87D6A5684F375DB7608EE20414B4AA
D0219B793CBB11ABADAA4FA078A17CA02251260F9F2B0E4AB9764483CF4BAA67
AB5143B104DB39F02F68ED3359C5296F0E9DC72AB3F5DAFAA0C3758565A2B2A2
399C57BECE36155975EB6C520CB18D0EC0777AC56E32BFDF7DC9037103F6B835
1CC5C3F0185610558F1081EB669526191A57C10981FFBFE74E2BE10F8847A647
0CFF413429B3CB22EE1E56729B0AF171A3C131655258AF7F3EED9032D0D8A0ED
6213DD78335D08FF1840A5D461414E23F68B3045B63B75DC1EED2B625B988E8D
E38C68BFEFBFFC9B58398E7FCCA585035221AF935B73B1085ECF0190A26D4EC1
69F7503378F25C8E88E482439A02CE152E4C22B62B5203ECF57C87F94772BE9E
549FD47941F80E5D49F8D8E394870E36282C8DE08000408C0DE2C4EA96950BBE
0862A66255A9C5889E9F6DF94E80EF896E9AC26855ECA72BDA9E7A905CC8E4C9
3B63908EDCD4E6B6F11A921737A5CFC4AD354FCC15BA19A08F8E6887A858894F
FB29A6D23919609AD32EEDD4C4C1F57CBA3C4B1817D409FA805B2DFDBDE7D67E
9CD8383D848BCC7FC1FBA9290E0EDB60B2CA392F5802EFF574834313E1C51D92
8A2A37F1481774C0F95DB1937E587F642105AC2278046696E0FA1C400A129584
21A9FBCC23329E148B88C1721FFBA1F20598B0CD2E3A93F6CED870CF49CEDC64
CDC6A9DACAB1AB95CD09B12FFAF6025F8F469E6D0B10EEBE23B5D3EA08CE1479
103E18207AA421CB900BD507E7D90999A2D595A5834C99C61E9E9F61D8B8E7F1
3070B771D1C8572AA4E166184796FECB1630BD1CEC6F59F71CB07941AA9B94E8
5B872EE04210EE488254EB5F89FD0ED8B554B0C9DA7B14BA2A56B62E1BFEA94A
EEA3B2404723B38C05F9D7F47025FD1C34EAAFA16D97E9E519C34B97C6E1A96D
B18141C0B7361F782543B40AA5ABFB489C20EB11B3BDD53248AFDC769A83948E
394E074517F2C2A94095250122678682EA333449A416A61E76B163E530FFAE98
C8F5585F5BBF673D0276707BF3BC39132BA8B4E711D09F74694E01F26BF7AD93
CE089A8C79D5CD068250DB899D14F37C199E6EA98FA8C8D098E9DBE1CD30A3CC
DD0ABEDADE7CBE1201A927630C53F3DDAFF9921C991D25EC860E2AE9E80EF6C2
D65DAFEBF72AA57535BA93B8EF25708FDF0FDE1E2B7D3A0B56FE450D3D9B83DE
2CCD3E59DDBD8F2201920B1706263D604E53091F7B348219043DD8D576B12A21
7BCDFF99073C22FBE6096241F73EA8DDFD1524C038D6FFADF8981D7628E4FCBC
953DDE3507EB6CFED61DAB94568145046A43EDB61706CF5C2EEDFEFFAAE0A189
220D69A773A51FD274161AE1AAB5AFBB18854913CF142C322B4D73FF174AFAFC
54D33C499CB450948EA4F8CD2F02EF0C6CADF2EB9CDBB88484D4C450FD2CC5E6
F62F92137C8DE1674FA17F46A580B076B1E64DC089DEC258E9D31EFFA7D08326
8C55B6373A8921A05D1A130A2F0EEF3F8D56EA21D98E49C2C1659D4D3E61182D
CB4867E53FFC63D5A3DDE57D13D45887B03B85AA58D7157372D60BACAE0AE558
4E21984D29AE3D5949ACE5298F5D3738A97B97D154CF47781D00F9ABAAD18631
DAE449497A0007B1C89F283D479A9675B0EA333037DC8C439DF1020C5071CFFA
5AB9B3CD0C29CD381D11892280A92869C0E0457635B7A9EE30A98240A5DBBAD1
22ACA472D6E368A6BBA737FD6AF3236EEF0DDCBC5C6CD23B515339CCAA7E271D
570C979016CEF09D0DCDB18E35E0F90FCBC4C1AC2F5479F337AFF5943B07C880
C500C74FBC24FA7F760E5C07B1BD86D710B8118A02157AEB2900CAD076DC0FCD
C50C17EB9040E3C11E5239A8D07BF69BA55C74633F61D7F48A5CC7F2CE5FB381
6E03702FA07DBB95722BF1577231B9C86A025E382162D9F5D70CED100FD6C082
BDFAFCD8DD2C049690697A7D98A0382156D631D13A802CB7B625B79036092152
7DC47706EB073A69CDE30339D1027975B831DA4B5F2A5F6C09BF902AA3029B57
283D8368340F2D39D88BF30B6F6A5EFDE5CEC94041F0FB5A92DA2D93B044C81F
874A5FA2619B3D7B3338EB42FCD2C12153D600F6540D2B3CBF9BBEE09B48FD6F
B3B246744EB42544321118FA0D2587B996D1FC68FCA703DFA294D519B4D2672A
E06F3ABB51D44BD6094D1E6F80BFBD96252E03A3CBFAFBA755060CF889A7990E
472D2829571BFBC45D91092396B158736C3EEEA21C66B8D3BBCC74B4B34BDD22
87181C49A8B40F22ECAC7ECDB5DFCA4031245A98471BCEBCBFC88892DBD10935
1B23BA270AE5276A275FAB451FFA5375DDAE21D529DC20B94C14E7F6AF39A4CE
34B8AF9E441BD06D91EBB132
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMR10
%!PS-AdobeFont-1.0: CMR10 003.002
%%Title: CMR10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMR10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup
/UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMR10 def
/FontBBox {-40 -250 1009 750 }readonly def
/UniqueID 5000793 def
/PaintType 0 def
/FontInfo 9 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def
/FullName (CMR10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 43 /plus put
dup 61 /equal put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA
0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93
51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71
7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551
E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078
0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273
C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8
569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079
24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A
2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944
8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E
3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26
D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24
D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B
03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685
767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A
8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B
DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E
94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004
22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7
72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C
8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491
344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A
64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B
07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC
1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8
78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51
CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120
7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782
BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462
4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A
5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D
EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE
EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622
4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE
0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5
C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904
314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E
DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029
EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13
DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E
DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084
7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91
1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155
69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE
EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5
7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67
CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D
38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3
22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C
0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1
BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D
4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F
3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD
B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE
15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9
849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3
FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84
4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76
1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798
84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF
7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122
CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA
4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B
3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394
F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D
F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140
DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7
D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886
56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4
8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53
59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED
49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86
87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B
8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60
C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342
D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64
D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1
F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178
0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B
5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448
229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC
17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4
01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616
F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662
3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0
689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20
4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F
A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03
DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D
364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F
7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F
26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1
43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD
8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7
C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08
94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5
C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1
B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56
4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5
7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01
204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE
B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56
7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6
279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB
E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346
CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A
65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78
BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285
6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7
B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3
63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89
4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A
A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6
67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C
DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A
5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9
C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C
9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D
B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51
963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0
D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB
B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B
72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE
B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358
8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB
3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0
668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152
ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5
69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118
C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754
3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13
407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01
11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF
2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87
4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40
2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF
9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889
CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8
DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973
0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362
5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7
9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A
EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2
09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A
2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2
AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420
324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786
486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A
EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660
52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5
9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3
4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D
B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7
BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14
6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0
B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359
16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED
E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6
546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED
6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507
559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B
C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A
ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354
04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B
7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A
8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B
A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02
94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB
C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC
41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654
7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5
18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76
9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD
E0B5622DF6FC4BF52147208D9A91EB49B03BB40DE7F8FBFB566F251942C8FFB1
1DFA50465919400C21CE4724D12E4EB47AA5F392BA927329DBCA28A78FC1DF2E
6FF27F4E4E3F8971D7BCB5F3FBF8F30C214A26E5E32E0E8CBC71BF20AE573BBB
163DD66E89F2C4E2B1A1532AE81C060146F755A1ABA3F1365FEA30B403DE7B22
76F43EDC299DB9C4B5CC1F04E09FE8BA03A83D734BD05CB9BB269174E1BBB037
709082441C1F212697D41BD33C74186087F856B0D4C81130351D74405DEF3968
CE4BCBB69A5D60EB80ED5175C2B8BE575ADFA3D23D0E50A2FBE0934ADC5471D1
DEDB364DEABFF56CDF53F2857EC58B327C99189565A47951885E2339829367A4
1DEFE80906729D6D0C78C2962DFC3DF0CF9A285A00C471B7A5D11EB388A4643F
A05319202A3062F218582C9164A3300D9C6C78D5CE674529F2D835D85AE33A1D
DA2DB1C4B7120D8BABD4033F27AA99923E2D9300AD07FE0F3C7AD30BF4E50C2D
841ABA644E60DA93E8AA4C8D0BEC69F6427E0AA2DC71653F51EC94BB013346D9
1A9AD9A01DD93364CB08FDB86EAF3D304E3E2B727DBD271DA465FB56BB8B9936
953595982640AAFA33E77A88DB53D307DF3710950A1AA0ADEF16AC1F7E6601E0
2A8143A3C9A143DC0E30A7A77F47EF31B06A7E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
%%BeginFont: CMMI10
%!PS-AdobeFont-1.0: CMMI10 003.002
%%Title: CMMI10
%Version: 003.002
%%CreationDate: Mon Jul 13 16:17:00 2009
%%Creator: David M. Jones
%Copyright: Copyright (c) 1997, 2009 American Mathematical Society
%Copyright: (), with Reserved Font Name CMMI10.
% This Font Software is licensed under the SIL Open Font License, Version 1.1.
% This license is in the accompanying file OFL.txt, and is also
% available with a FAQ at: http://scripts.sil.org/OFL.
%%EndComments
FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup
/UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse
{save true}{false}ifelse}{false}ifelse
11 dict begin
/FontType 1 def
/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def
/FontName /CMMI10 def
/FontBBox {-32 -250 1048 750 }readonly def
/UniqueID 5087385 def
/PaintType 0 def
/FontInfo 10 dict dup begin
/version (003.002) readonly def
/Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def
/FullName (CMMI10) readonly def
/FamilyName (Computer Modern) readonly def
/Weight (Medium) readonly def
/ItalicAngle -14.04 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
/ascent 750 def
end readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
dup 58 /period put
dup 59 /comma put
dup 61 /slash put
dup 62 /greater put
readonly def
currentdict end
currentfile eexec
D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5
45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4
7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7
72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E
BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89
974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674
11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2
1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C
7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B
0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085
EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37
404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133
78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF
A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE
88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4
C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC
BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88
98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760
E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44
143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3
981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490
88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285
4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683
FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F
347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F
FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB
C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04
B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733
F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA
29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66
36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12
048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0
80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C
9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B
75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E
4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC
74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B
D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355
E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097
EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D
543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883
710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6
EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F
7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93
03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2
01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89
500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F
F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208
AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE
1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915
85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C
4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1
6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F
55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18
085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02
BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951
2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D
CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E
BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E
D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1
991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125
6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754
E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80
E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1
B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3
4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65
1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB
B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7
8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA
FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6
AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E
BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051
E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD
38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3
7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751
2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27
DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D
22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6
8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB
44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90
D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A
42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF
C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E
0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE
66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6
E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1
6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E
1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10
B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B
897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E
EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40
A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3
F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA
A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126
2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6
51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3
598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F
87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE
178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6
4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78
7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6
AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6
3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379
337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547
C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5
DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA
7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD
6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC
98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355
821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4
C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886
7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6
B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16
A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325
23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF
C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3
969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10
3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B
9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725
1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239
B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966
95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7
FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE
44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986
FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4
E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA
633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D
6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F
FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD
375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2
6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7
EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C
E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D
F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156
DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891
D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538
D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4
9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B
9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6
B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0
D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF
8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93
FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26
B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F
00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50
909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49
5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF
7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA
BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0
C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1
BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37
BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D
4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075
94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1
F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9
E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA
92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0
63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A
CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271
B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9
5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E
86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0
AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180
3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC
35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD
155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580
AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255
E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F
226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496
9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B
8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B
919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE
A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7
9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0
523BFF5E279508A98568CD5CFD18FABBE9D17265A9081E7BF64155A2CE3C0DF7
88D00671AD65654709589BAD7EA65BBA811387ABA5CA0BC3F66D3D48597A0D1D
2C268375DF47CCF62166262AE4840AB03BF49BE67A05EF66328EC729F03CA5FF
AD3937FC053E223303565DC771ACF32E63DFB96D5030E787961D72D02C195C66
B48E9AF0309DC169CFE8D16E2818DA94693A18F027DEA0D9111F4948A3E665E3
0DE92169B2A2137C001654C5F4FDA968F5E3AB43146106BA16C4208830672D20
AD334D8E65DD1BC0932669F8E3F7878D974AD04A77099D790E0B1A3E42F707FA
C9FAC90FB248BC7D5B1D257192FD84E380D071F6952ABB19461B7F75C8713131
545041FCA0C57E8EE4EF7F2450F69072C2F34C6404E7CB16AB4AF621DC277E79
CCDBE5CBF9960DB9CB9F46FAFF42054BB3A72DBE0A78D3DD48183A5D7A243908
C7D32E3E73AAFE73A043E4ACE363BDE50AFF3E8F3D2EDF3BCE4426356A1EB0F6
A17D03A8871F600F0FDE33A4A8A1BE6742EBB877C2455EE0D29239BA4B6D2A97
2FD26D22A24DE2B8FEFBAEFFE023A884D9CA4033CF4DD070EB84C443628C30F4
A27B0D52C8BBC63BA65F27EB36345AFA31435FBDC776A543478F268995F3F271
563CAC515F68E3D13AF1E8D34C21B4560241CDCF7F12447D441453380F757CFC
6D7BE84969A11FD436B4E8B4230B8C625617A97AE2C808EF12CDD39922AB3499
5D65D339A85EE70406A9F2539BDFC222452E0396CA0FEE75F88A7F77595E5E47
7B3A0A79BE9C2F9C3D88DEDF6BC7ABF03EF9DA9DD6F9D520F3B3E2AD23ACB6C4
BE30982ADD3A5C22B30BD724636B913CA1AC0AA17BA1BA4BA92A75CAAD571B85
A3D7EDF9169E332021676D4A62699A0C11A786439EF8E5A0F7251B0916744829
1A
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark
{restore}if
%%EndFont
TeXDict begin 40258437 52099151 1000 8000 8000 (main.dvi)
@start /Fa 134[531 531 531 531 531 531 531 531 531 531
531 531 531 531 531 531 531 531 531 531 531 531 531 531
531 1[531 10[531 531 12[531 1[531 531 1[531 1[531 1[531
2[531 531 531 531 531 1[531 531 531 531 531 531 531 531
3[531 531 40[{ TeXBase1Encoding ReEncodeFont }49 885.568
/Courier rf /Fb 136[565 1[565 565 565 565 1[565 565 2[565
2[565 565 1[565 565 565 565 1[565 13[565 24[565 10[565
565 46[{ TeXBase1Encoding ReEncodeFont }19 940.916 /Courier
rf /Fc 252[387 3[{}1 774.872 /CMSY10 rf /Fd 134[611 5[611
4[611 7[611 1[611 611 57[611 611 40[{ TeXBase1Encoding ReEncodeFont }8
1018.4 /Courier-Oblique rf /Ff 134[443 443 639 1[492
295 344 393 1[492 443 492 738 246 492 1[246 492 443 1[393
492 393 1[443 9[886 1[639 591 492 1[689 541 689 1[836
591 5[541 1[639 639 591 13[443 4[246 5[295 295 2[886
33[492 3[{ TeXBase1Encoding ReEncodeFont }39 885.568
/Times-Bold rf /Fg 178[553 9[443 406 406 65[{
TeXBase1Encoding ReEncodeFont }4 664.176 /Times-Italic
rf /Fi 204[332 51[{ TeXBase1Encoding ReEncodeFont }1
664.176 /Times-Roman rf /Fk 207[183 48[{}1 664.176 /CMSY10
rf /Fl 207[225 44[410 2[637{}3 819.15 /CMSY10 rf /Fn
194[861 17[861 43[{}2 1106.96 /CMR10 rf /Fo 136[517 4[301
2[387 387 1[215 344 1[215 4[387 344 1[387 97[{
TeXBase1Encoding ReEncodeFont }10 774.872 /Times-Italic
rf /Fq 255[775{}1 996.264 /CMSY10 rf /Fr 205[387 387
49[{ TeXBase1Encoding ReEncodeFont }2 774.872 /Times-Roman
rf /Ft 194[775 61[{}1 996.264 /CMR10 rf /Fw 105[498 27[388
442 442 665 442 498 277 388 388 498 498 498 498 719 277
442 277 277 498 498 277 442 498 442 498 498 3[388 1[388
2[609 830 609 1[554 498 1[719 609 719 665 830 554 665
1[332 719 719 609 609 719 665 609 609 5[332 332 1[498
498 498 498 498 498 498 498 498 277 249 332 249 2[332
332 36[498 498 2[{ TeXBase1Encoding ReEncodeFont }69
996.264 /Times-Italic rf /Fx 133[491 553 1[799 553 615
369 431 491 615 615 553 615 922 308 615 1[308 615 553
369 491 615 491 615 553 8[799 1107 2[738 615 799 861
676 861 799 1045 738 1[553 431 1[861 676 738 799 799
738 799 6[369 3[553 553 553 553 553 553 2[277 369 3[369
369 37[615 2[{ TeXBase1Encoding ReEncodeFont }56 1106.96
/Times-Bold rf /Fy 212[637 43[{}1 819.15 /CMR10 rf /Fz
205[410 410 49[{ TeXBase1Encoding ReEncodeFont }2 819.15
/Times-Roman rf /FC 143[922 5[307 14[738 57[1107 7[861
22[861 1[861{}7 1106.96 /CMSY10 rf /FD 136[546 4[319
2[410 410 1[228 364 1[228 4[410 364 1[410 19[682 8[591
546 500 500 65[{ TeXBase1Encoding ReEncodeFont }15 819.15
/Times-Italic rf /FF 133[590 664 1[959 664 739 442 517
590 739 739 664 739 1107 369 739 1[369 739 664 442 590
739 590 739 664 11[959 886 739 959 1033 812 1033 959
1[886 1[664 517 1033 1033 812 1[959 959 886 959 9[664
664 664 664 664 664 664 2[332 43[739 2[{ TeXBase1Encoding ReEncodeFont }
51 1328.35 /Times-Bold rf /FG 193[861 553 1[307 307 58[{}4
1106.96 /CMMI10 rf /FI 134[393 393 591 1[443 246 344
344 1[443 443 443 639 246 2[246 443 1[246 393 443 393
443 443 8[541 738 541 639 492 443 541 1[541 639 591 738
492 1[393 295 1[639 541 541 639 591 541 541 7[443 1[443
443 443 443 443 443 443 443 6[295 295 295 39[{
TeXBase1Encoding ReEncodeFont }53 885.568 /Times-Italic
rf /FJ 105[443 27[393 443 443 639 443 443 246 344 295
1[443 443 443 689 246 443 246 246 443 443 295 393 443
393 443 393 3[295 1[295 541 639 639 836 639 639 541 492
591 639 492 639 639 787 541 639 344 295 639 639 492 541
639 591 591 639 1[393 4[246 443 443 443 443 443 443 443
443 443 443 246 221 295 221 2[295 295 295 35[492 492
2[{ TeXBase1Encoding ReEncodeFont }75 885.568 /Times-Roman
rf /FK 134[611 611 611 1[611 611 611 611 1[611 611 611
611 611 2[611 611 611 611 611 611 611 611 611 7[611 3[611
1[611 4[611 1[611 5[611 2[611 25[611 611 40[{
TeXBase1Encoding ReEncodeFont }30 1018.4 /Courier rf
/FL 134[491 491 738 491 553 308 431 431 1[553 553 553
799 308 491 308 308 553 553 308 491 553 491 553 553 9[922
2[615 553 2[676 799 1[922 2[491 3[676 1[799 1[676 676
18[277 369 277 2[369 369 36[553 553 2[{ TeXBase1Encoding ReEncodeFont }
42 1106.96 /Times-Italic rf /FM 88[553 18[491 491 24[491
553 553 799 553 553 308 431 369 553 553 553 553 861 308
553 308 308 553 553 369 491 553 491 553 491 3[369 1[369
676 799 799 1045 799 799 676 615 738 799 615 799 799
984 676 799 431 369 799 799 615 676 799 738 738 799 1[491
3[308 308 553 553 553 553 553 553 553 553 553 553 308
277 369 277 2[369 369 369 1[922 3[369 29[615 615 2[{
TeXBase1Encoding ReEncodeFont }81 1106.96 /Times-Roman
rf /FN 134[797 2[797 886 531 620 708 1[886 797 886 1328
443 886 1[443 886 1[531 708 886 708 886 797 9[1594 3[886
1151 1[974 1240 5[620 2[974 1063 1[1151 1[1151 7[797
797 797 797 797 797 797 797 797 49[{ TeXBase1Encoding ReEncodeFont }39
1594.02 /Times-Bold rf /FO 152[664 664 102[{}2 1328.35
/CMSY10 rf /FP 134[590 2[590 664 369 517 517 1[664 664
664 959 3[369 2[369 590 664 590 1[664 9[1107 1[959 1[664
2[812 2[1107 8[959 886 22[332 44[{ TeXBase1Encoding ReEncodeFont }24
1328.35 /Times-Italic rf /FQ 133[590 664 1[959 664 664
369 517 442 1[664 1[664 1033 369 664 369 369 664 2[590
664 590 664 590 10[959 1[812 739 886 1[739 7[959 3[959
886 1[959 1223 17[332 442 332 44[{ TeXBase1Encoding ReEncodeFont }34
1328.35 /Times-Roman rf /FR 134[956 4[637 744 849 1[1064
956 1064 1593 3[532 1064 2[849 1[849 1[956 17[1488 11[1381
67[{ TeXBase1Encoding ReEncodeFont }15 1912.83 /Times-Bold
rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 8000dpi
TeXDict begin
%%BeginPaperSize: Letter
/setpagedevice where
{ pop << /PageSize [612 792] >> setpagedevice }
{ /letter where { pop letter } if }
ifelse
%%EndPaperSize
end
%%EndSetup
%%Page: 1 1
TeXDict begin 1 0 bop 0 0 a
SDict begin [/Producer (dvips + Distiller)/Title ()/Subject ()/Creator
(LaTeX with hyperref package)/Author ()/Keywords () /DOCINFO pdfmark
end
0 0 a 0 0 a
SDict begin /product where{pop product(Distiller)search{pop pop pop
version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
grestore}if}{pop}ifelse}{pop}ifelse}if end
0 0 a -111 -111
a
SDict begin H.S end
-111 -111 a -111 -111 a
SDict begin H.R end
-111 -111 a -111 -111 a
SDict begin [/View [/XYZ H.V]/Dest (page.1) cvn /DEST pdfmark end
-111
-111 a 13833 -1751 a FR(Optimistic)477 b(Crash)i(Consistency)9918
1459 y FQ(V)-80 b(ijay)333 b(Chidambaram,)h(Thanumalayan)e
(Sankaranarayana)g(Pillai,)11503 3009 y(Andrea)h(C.)f(Arpaci-Dusseau,)g
(Remzi)g(H.)h(Arpaci-Dusseau)16869 4959 y FP(Department)g(of)f
(Computer)h(Sciences)17040 6509 y(Univer)-13 b(sity)332
b(of)h(W)-73 b(isconsin,)331 b(Madison)12808 8458 y FO(f)p
FQ(vijayc,)i(madthanu,)g(dusseau,)f(remzi)p FO(g)p FQ(@cs.wisc.edu)0
11691 y
SDict begin [/Count -0/Dest (section.1) cvn/Title (Introduction) /OUT
pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -3/Dest (section.2) cvn/Title (Pessimistic Crash Consistency)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.2.1) cvn/Title (Disk Interface)
/OUT pdfmark end
0 11691
a 0 11691 a
SDict begin [/Count -0/Dest (subsection.2.2) cvn/Title (Pessimistic Journaling)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.2.3) cvn/Title (Flushing Performance Impact)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -3/Dest (section.3) cvn/Title (Probabilistic Crash Consistency)
/OUT pdfmark end
0
11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.3.1) cvn/Title (Quantifying Probabilistic Consistency)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -3/Dest (subsection.3.2) cvn/Title (Factors affecting Pinc)
/OUT pdfmark end
0 11691 a 0 11691
a
SDict begin [/Count -0/Dest (subsubsection.3.2.1) cvn/Title (Workload)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsubsection.3.2.2) cvn/Title (Queue Size)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsubsection.3.2.3) cvn/Title (Journal Layout)
/OUT pdfmark end
0 11691 a 0
11691 a
SDict begin [/Count -0/Dest (subsection.3.3) cvn/Title (Summary) /OUT
pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -4/Dest (section.4) cvn/Title (Optimistic Crash Consistency)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.4.1) cvn/Title (Asynchronous Durability Notification)
/OUT pdfmark end
0 11691
a 0 11691 a
SDict begin [/Count -0/Dest (subsection.4.2) cvn/Title (Optimistic Consistency Properties)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -6/Dest (subsection.4.3) cvn/Title (Optimistic Techniques)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsubsection.4.3.1) cvn/Title (In-Order Journal Recovery)
/OUT pdfmark end
0
11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsubsection.4.3.2) cvn/Title (In-Order Journal Release)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsubsection.4.3.3) cvn/Title (Checksums)
/OUT pdfmark end
0 11691 a 0 11691
a
SDict begin [/Count -0/Dest (subsubsection.4.3.4) cvn/Title (Background Write after Notification)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsubsection.4.3.5) cvn/Title (Reuse after Notification)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsubsection.4.3.6) cvn/Title (Selective Data Journaling)
/OUT pdfmark end
0 11691 a 0
11691 a
SDict begin [/Count -0/Dest (subsection.4.4) cvn/Title (Durability vs. Consistency)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -3/Dest (section.5) cvn/Title (Implementation of OptFS)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.5.1) cvn/Title (Asynchronous Durability Notifications)
/OUT pdfmark end
0 11691
a 0 11691 a
SDict begin [/Count -0/Dest (subsection.5.2) cvn/Title (Handling Data Blocks)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.5.3) cvn/Title (Optimistic Techniques)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -4/Dest (section.6) cvn/Title (Evaluation) /OUT
pdfmark end
0
11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.6.1) cvn/Title (Reliability)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.6.2) cvn/Title (Performance)
/OUT pdfmark end
0 11691 a 0 11691
a
SDict begin [/Count -0/Dest (subsection.6.3) cvn/Title (Resource consumption)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.6.4) cvn/Title (Journal size)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -2/Dest (section.7) cvn/Title (Case Studies) /OUT
pdfmark end
0 11691 a 0
11691 a
SDict begin [/Count -0/Dest (subsection.7.1) cvn/Title (Atomic Update within Gedit)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (subsection.7.2) cvn/Title (Temporary Logging in SQLite)
/OUT pdfmark end
0 11691 a 0 11691 a
SDict begin [/Count -0/Dest (section.8) cvn/Title (Related Work) /OUT
pdfmark end
0 11691
a 0 11691 a
SDict begin [/Count -0/Dest (section.9) cvn/Title (Conclusion) /OUT
pdfmark end
0 11691 a 0 11691 a
SDict begin [/PageMode /UseOutlines/Page 1/View [/Fit] /DOCVIEW pdfmark
end
0 11691 a 0 11691 a
SDict begin [ {Catalog}<<>> /PUT pdfmark end
0
11691 a 0 11691 a
SDict begin H.S end
0 11691 a 0 11691 a
SDict begin 24 H.A end
0 11691 a 0 11691
a
SDict begin [/View [/XYZ H.V]/Dest (Doc-Start) cvn /DEST pdfmark end
0 11691 a 0 11691 a
SDict begin [ {Catalog} << /PageLabels<>1<
>2<>3<>4<>5<>6<>7<>8<>9<>10<>11<>12<>13<>14<>15<>]>>
>> /PUT pdfmark end
0 11691 a 1395 x FN(Abstract)0
15255 y FM(W)-89 b(e)488 b(introduce)g FL(optimistic)f(cr)-17
b(ash)488 b(consistency)p FM(,)541 b(a)487 b(ne)-28 b(w)488
b(ap-)0 16583 y(proach)435 b(to)f(crash)g(consistenc)-17
b(y)436 b(in)d(journaling)j(\002le)e(systems.)0 17912
y(Using)262 b(an)h(array)f(of)g(no)-17 b(v)g(el)265 b(techniques,)h(we)
d(demonstrate)g(ho)-28 b(w)0 19240 y(to)535 b(b)-22 b(uild)536
b(an)g(optimistic)e(commit)i(protocol)h(that)e(correctly)0
20568 y(reco)-17 b(v)g(ers)498 b(from)e(crashes)h(and)h(deli)-28
b(v)-17 b(ers)497 b(high)h(performance.)0 21897 y(W)-89
b(e)396 b(implement)h(this)d(optimistic)h(approach)j(within)e(a)f
(Linux)0 23225 y(e)-17 b(xt4)505 b(v)-28 b(ariant)504
b(which)g(we)g(call)g FL(OptFS)p FM(.)g(W)-89 b(e)504
b(introduce)h(tw)-11 b(o)0 24553 y(ne)-28 b(w)252 b(\002le-system)f
(primiti)-28 b(v)-17 b(es,)255 b FK(osync\(\))c FM(and)h
FK(dsync\(\))p FM(,)k(that)0 25882 y(decouple)445 b(ordering)e(of)e
(writes)g(from)h(their)g(durability)-72 b(.)838 b(W)-89
b(e)0 27210 y(sho)-28 b(w)362 b(through)g(e)-17 b(xperiments)363
b(that)e(OptFS)h(impro)-17 b(v)g(es)362 b(perfor)-22
b(-)0 28539 y(mance)417 b(for)e(man)-17 b(y)417 b(w)-11
b(orkloads,)451 b(sometimes)415 b(by)h(an)g(order)g(of)0
29867 y(magnitude;)452 b(we)393 b(con\002rm)h(its)d(correctness)j
(through)g(a)f(series)0 31195 y(of)414 b(rob)-22 b(ustness)414
b(tests,)448 b(sho)-28 b(wing)415 b(it)f(reco)-17 b(v)g(ers)416
b(to)e(a)g(consistent)0 32524 y(state)340 b(after)g(crashes.)534
b(Finally)-72 b(,)357 b(we)341 b(sho)-28 b(w)341 b(that)g
FK(osync\(\))g FM(and)0 33852 y FK(dsync\(\))362 b FM(are)g(useful)g
(in)f(atomic)i(\002le)f(system)g(and)h(database)0 35180
y(update)230 b(scenarios,)238 b(both)229 b(impro)-17
b(ving)230 b(performance)g(and)f(meet-)0 36509 y(ing)277
b(application-le)-28 b(v)-17 b(el)281 b(consistenc)-17
b(y)279 b(demands.)0 36748 y
SDict begin H.S end
0 36748 a 0 36748 a
SDict begin 12 H.A end
0 36748
a 0 36748 a
SDict begin [/View [/XYZ H.V]/Dest (section.1) cvn /DEST pdfmark end
0 36748 a 2593 x FN(1)1594 b(Intr)-29 b(oduction)0
41508 y FM(Modern)371 b(storage)f(de)-28 b(vices)372
b(present)e(a)g(seemingly)h(innocuous)0 42836 y(interf)-11
b(ace)299 b(to)e(clients.)406 b(T)-89 b(o)298 b(read)h(a)f(block,)304
b(one)299 b(simply)f(issues)f(a)0 44164 y(lo)-28 b(w-le)g(v)-17
b(el)285 b(read)f(command)h(and)f(speci\002es)g(the)g(address)f(of)g
(the)0 45493 y(block)375 b(\(or)f(set)g(of)f(blocks\))i(to)f(read;)423
b(when)376 b(the)e(disk)g(\002nishes)0 46821 y(the)326
b(read,)338 b(it)325 b(is)g(transferred)h(into)f(memory)i(and)g(an)-17
b(y)327 b(a)-17 b(w)-11 b(aiting)0 48149 y(clients)375
b(noti\002ed)i(of)e(the)g(completion.)640 b(A)375 b(similar)f(process)i
(is)0 49478 y(follo)-28 b(wed)278 b(for)f(writes.)1107
50965 y(Unfortunately)-72 b(,)278 b(the)e(introduction)i(of)d
FL(write)h(b)-22 b(uf)i(fering)277 b FM([)23525 50980
y
SDict begin H.S end
23525 50980 a -15 x FM(28)24631 50210 y
SDict begin H.R end
24631 50210
a 24631 50965 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Solworth90-WriteBuffer) cvn H.B /ANN pdfmark end
24631 50965 a FM(])0 52293 y(in)269 b(modern)h(disks)e
(greatly)i(complicates)g(this)e(apparently)j(sim-)0 53621
y(ple)414 b(process.)754 b(W)-44 b(ith)413 b(write)g(b)-22
b(uf)-28 b(fering)414 b(enabled,)450 b(disk)414 b(writes)0
54950 y(may)227 b(complete)g(out)f(of)g(order)-44 b(,)235
b(as)226 b(a)g(smart)f(disk)h(scheduler)h(may)0 56278
y(reorder)258 b(requests)g(for)e(performance)k([)15105
56293 y
SDict begin H.S end
15105 56293 a -15 x FM(13)16211 55523 y
SDict begin H.R end
16211
55523 a 16211 56278 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Jacobson91-Sched) cvn H.B /ANN pdfmark end
16211 56278 a FM(,)16599 56278
y
SDict begin H.S end
16599 56278 a FM(24)17705 55523 y
SDict begin H.R end
17705 55523 a 17705
56278 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Seltzer90-SchedRevisit) cvn H.B /ANN pdfmark end
17705 56278 a FM(,)18093 56293 y
SDict begin H.S end
18093 56293
a -15 x FM(38)19199 55523 y
SDict begin H.R end
19199 55523 a 19199 56278
a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.WorthingtonEtAl94-Scheduling) cvn H.B /ANN pdfmark
end
19199 56278 a FM(];)266 b(further)-44 b(,)260 b(the)0
57606 y(noti\002cation)297 b(recei)-28 b(v)-17 b(ed)297
b(after)d(a)h(write)f(issue)h(implies)f(only)i(that)0
61579 y FJ(Permission)218 b(to)e(mak)-9 b(e)217 b(digital)g(or)f(hard)g
(copies)h(of)f(part)g(or)g(all)h(of)f(this)h(w)-9 b(ork)216
b(for)0 62631 y(personal)273 b(or)g(classroom)h(use)g(is)f(granted)g
(without)h(fee)f(pro)-13 b(vided)272 b(that)h(copies)0
63683 y(are)211 b(not)f(made)h(or)f(distrib)-18 b(uted)211
b(for)f(pro\002t)h(or)f(commercial)h(adv)-22 b(antage)210
b(and)h(that)0 64734 y(copies)191 b(bear)f(this)h(notice)f(and)g(the)g
(full)g(citation)h(on)f(the)g(\002rst)h(page.)265 b(Cop)-9
b(yrights)0 65786 y(for)219 b(third-party)g(components)g(of)g(this)h(w)
-9 b(ork)220 b(must)f(be)h(honored.)273 b(F)-13 b(or)219
b(all)h(other)0 66837 y(uses,)j(contact)f(the)f(Owner/Author)-49
b(.)0 68941 y(Cop)-9 b(yright)220 b(is)i(held)g(by)f(the)g
(Owner/Author\(s\).)0 69992 y FI(SOSP'13)p FJ(,)g(No)-13
b(v)-58 b(.)275 b(3\2266,)221 b(2013,)g(F)-13 b(armington,)222
b(Pennsylv)-22 b(ania,)222 b(USA.)0 71044 y(A)-35 b(CM)221
b(978-1-4503-2388-8/13/11.)0 72095 y(http://dx.doi.or)-16
b(g/10.1145/2517349.2522726)27000 12798 y FM(the)402
b(disk)g(has)g(recei)-28 b(v)-17 b(ed)405 b(the)d(request,)434
b(not)402 b(that)g(the)h(data)f(has)27000 14126 y(been)279
b(written)d(to)h(the)h(disk)f(surf)-11 b(ace)277 b(persistently)-72
b(.)28107 15643 y(Out-of-order)443 b(write)f(completion,)486
b(in)443 b(particular)-44 b(,)484 b(greatly)27000 16971
y(complicates)346 b(kno)-28 b(wn)347 b(techniques)g(for)d(reco)-17
b(v)g(ering)347 b(from)e(sys-)27000 18300 y(tem)400 b(crashes.)714
b(F)-17 b(or)401 b(e)-17 b(xample,)433 b(modern)401 b(journaling)h
(\002le)f(sys-)27000 19628 y(tems)385 b(such)i(as)e(Linux)i(e)-17
b(xt3,)413 b(XFS,)386 b(and)h(NTFS)g(all)e(carefully)27000
20957 y(orchestrate)258 b(a)g(sequence)i(of)d(updates)i(to)e(ensure)i
(that)e(writes)g(to)27000 22285 y(main)217 b(\002le-system)f
(structures)f(and)j(the)e(journal)h(reach)g(disk)g(in)f(a)27000
23613 y(particular)305 b(order)f([)34554 23613 y
SDict begin H.S end
34554
23613 a FM(22)35660 22858 y
SDict begin H.R end
35660 22858 a 35660 23613
a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.PrabhakaranEtAl05-Usenix) cvn H.B /ANN pdfmark end
35660 23613 a FM(];)317 b(cop)-11 b(y-on-write)305
b(\002le)g(systems)e(such)i(as)27000 24942 y(LFS,)259
b(btrfs,)h(and)f(ZFS)f(also)g(require)h(ordering)f(when)i(updating)
27000 26270 y(certain)398 b(structures.)705 b(W)-44 b(ithout)398
b(ordering,)429 b(most)397 b(\002le)h(systems)27000 27598
y(cannot)216 b(ensure)e(that)g(state)g(can)h(be)g(reco)-17
b(v)g(ered)217 b(after)c(a)h(crash)h([)50802 27613 y
SDict begin H.S end
50802 27613 a -15 x FM(6)51355 26843 y
SDict begin H.R end
51355 26843 a
51355 27598 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Chidambaram+12-NoFS) cvn H.B /ANN pdfmark end
51355 27598 a FM(].)28107 29115 y(Write)417
b(ordering)i(is)e(achie)-28 b(v)-17 b(ed)421 b(in)d(modern)h(dri)-28
b(v)-17 b(es)419 b(via)f(e)-17 b(x-)27000 30444 y(pensi)-28
b(v)-17 b(e)378 b FL(cac)-17 b(he)379 b(\003ush)e FM(operations)g([)
41477 30459 y
SDict begin H.S end
41477 30459 a -15 x FM(30)42583 29689 y
SDict begin H.R end
42583 29689 a 42583 30444 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Steigerwald07-Order) cvn H.B /ANN pdfmark end
42583 30444 a FM(];)426 b(such)377
b(\003ushes)f(cause)27000 31772 y(all)414 b(b)-22 b(uf)-28
b(fered)416 b(dirty)e(data)i(in)f(the)g(dri)-28 b(v)-17
b(e)416 b(to)e(be)h(written)g(to)f(the)27000 33100 y(surf)-11
b(ace)258 b(\()p FL(i.e)-17 b(.)p FM(,)261 b FL(per)-11
b(sisted)p FM(\))257 b(immediately)-72 b(.)338 b(T)-89
b(o)259 b(ensure)g FL(A)e FM(is)g(writ-)27000 34429 y(ten)398
b(before)h FL(B)p FM(,)428 b(a)399 b(client)f(issues)f(the)i(write)e
(to)h FL(A)p FM(,)428 b(and)400 b(then)f(a)27000 35757
y(cache)308 b(\003ush;)321 b(when)308 b(the)e(\003ush)h(returns,)313
b(the)306 b(client)g(can)i(safely)27000 37085 y(assume)348
b(that)f FL(A)g FM(reached)i(the)f(disk;)381 b(the)348
b(write)e(to)h FL(B)h FM(can)g(then)27000 38414 y(be)278
b(safely)f(issued,)g(kno)-28 b(wing)279 b(it)d(will)g(be)i(persisted)f
(after)g FL(A)p FM(.)28107 39931 y(Unfortunately)-72
b(,)260 b(cache)255 b(\003ushing)g(is)d(e)-17 b(xpensi)-28
b(v)-17 b(e,)262 b(sometimes)27000 41259 y(prohibiti)-28
b(v)-17 b(ely)339 b(so.)524 b(Flushes)338 b(mak)-11 b(e)338
b(I/O)f(scheduling)i(less)e(ef)-28 b(\002-)27000 42588
y(cient,)365 b(as)347 b(the)h(disk)f(has)g(fe)-28 b(wer)348
b(requests)f(to)h(choose)g(from.)554 b(A)27000 43916
y(\003ush)213 b(also)e(unnecessarily)j(forces)e FL(all)f
FM(pre)-28 b(vious)213 b(writes)e(to)h(disk,)27000 45244
y(whereas)286 b(the)f(requirements)g(of)g(the)g(client)g(may)g(be)h
(less)d(strin-)27000 46573 y(gent.)534 b(In)340 b(addition,)357
b(during)342 b(a)e(lar)-20 b(ge)341 b(cache)h(\003ush,)357
b(disk)340 b(reads)27000 47901 y(may)474 b(e)-17 b(xhibit)475
b(e)-17 b(xtremely)476 b(long)e(latencies)h(as)e(the)-17
b(y)475 b(w)-11 b(ait)473 b(for)27000 49229 y(pending)367
b(writes)c(to)h(complete)i([)40016 49244 y
SDict begin H.S end
40016 49244
a -15 x FM(26)41122 48474 y
SDict begin H.R end
41122 48474 a 41122 49229
a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Sites13-Disk) cvn H.B /ANN pdfmark end
41122 49229 a FM(].)605 b(Finally)-72 b(,)387 b(\003ushing)366
b(con-)27000 50558 y(\003ates)376 b(ordering)g(and)g(durability;)424
b(if)374 b(a)i(client)f(simply)g(wishes)27000 51886 y(to)332
b(order)h(one)h(write)e(before)h(another)-44 b(,)348
b(forcing)333 b(the)g(\002rst)e(write)27000 53214 y(to)303
b(disk)h(is)e(an)i(e)-17 b(xpensi)-28 b(v)-17 b(e)307
b(manner)e(in)f(which)g(to)f(achie)-28 b(v)-17 b(e)307
b(such)27000 54543 y(an)j(end.)443 b(In)309 b(short,)317
b(the)311 b(classic)e(approach)j(of)e(\003ushing)h(is)e
FL(pes-)27000 55871 y(simistic)p FM(;)351 b(it)326 b(assumes)i(a)f
(crash)h(will)e(occur)j(and)f(goes)g(to)f(great)27000
57199 y(lengths)415 b(to)f(ensure)h(that)f(the)g(disk)g(is)f(ne)-28
b(v)-17 b(er)416 b(in)e(an)h(inconsis-)27000 58528 y(tent)431
b(state)g(via)g(\003ush)g(commands.)807 b(The)432 b(poor)g(performance)
27000 59856 y(that)270 b(results)g(from)g(pessimism)f(has)i(led)g(some)
g(systems)e(to)i(dis-)27000 61184 y(able)332 b(\003ushing,)345
b(apparently)334 b(sacri\002cing)e(correctness)g(for)e(per)-22
b(-)27000 62513 y(formance;)401 b(for)359 b(e)-17 b(xample,)381
b(the)360 b(Linux)g(e)-17 b(xt3)360 b(def)-11 b(ault)360
b(con\002gu-)27000 63841 y(ration)277 b(did)h(not)f(\003ush)h(caches)h
(for)d(man)-17 b(y)279 b(years)e([)46167 63856 y
SDict begin H.S end
46167
63856 a -15 x FM(8)46720 63086 y
SDict begin H.R end
46720 63086 a 46720
63841 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Corbet08-Barriers) cvn H.B /ANN pdfmark end
46720 63841 a FM(].)28107 65358 y(Disabling)282
b(\003ushes)g(does)g(not)g(necessarily)g(lead)g(to)f(\002le)h(sys-)
27000 66687 y(tem)336 b(inconsistenc)-17 b(y)-72 b(,)352
b(b)-22 b(ut)336 b(rather)g(introduces)h(it)d(as)i(a)g(possibil-)27000
68015 y(ity)-72 b(.)497 b(W)-89 b(e)329 b(refer)f(to)h(such)g(an)g
(approach)j(as)c FL(pr)-50 b(obabilistic)329 b(cr)-17
b(ash)27000 69343 y(consistency)p FM(,)239 b(in)227 b(which)h(a)g
(crash)f FL(might)h FM(lead)g(to)f(\002le)h(system)f(in-)27000
70672 y(consistenc)-17 b(y)-72 b(,)241 b(depending)232
b(on)e(man)-17 b(y)231 b(f)-11 b(actors,)239 b(including)231
b(w)-11 b(ork-)27000 72000 y(load,)240 b(system)229 b(and)i(disk)e
(parameters,)240 b(and)230 b(the)g(e)-17 b(xact)231 b(timing)f(of)p
eop end
%%Page: 2 2
TeXDict begin 2 1 bop 0 0 a
SDict begin /product where{pop product(Distiller)search{pop pop pop
version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
grestore}if}{pop}ifelse}{pop}ifelse}if end
0 0 a -111 -111 a
SDict begin H.S end
-111 -111
a -111 -111 a
SDict begin H.R end
-111 -111 a -111 -111 a
SDict begin [/View [/XYZ H.V]/Dest (page.2) cvn /DEST pdfmark end
-111 -111 a 0 1107
a FM(the)221 b(crash)f(or)g(po)-28 b(wer)221 b(loss.)324
b(In)220 b(this)f(paper)-44 b(,)232 b(one)221 b(of)f(our)h(\002rst)e
(con-)0 2435 y(trib)-22 b(utions)307 b(is)f(the)i(careful)g(study)g(of)
f(probabilistic)g(crash)h(con-)0 3764 y(sistenc)-17 b(y)-72
b(,)277 b(wherein)h(we)f(sho)-28 b(w)277 b(which)h(e)-17
b(xact)278 b(f)-11 b(actors)276 b(af)-28 b(fect)277 b(the)0
5092 y(odds)364 b(that)g(a)g(crash)g(will)f(lea)-22 b(v)-17
b(e)365 b(the)f(\002le)h(system)e(inconsistent)0 6420
y(\(\247)922 6435 y
SDict begin H.S end
922 6435 a -15 x FM(3)1475 5665 y
SDict begin H.R end
1475 5665 a 1475 6420 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (section.3) cvn H.B /ANN pdfmark end
1475 6420 a FM(\).)333 b(W)-89
b(e)248 b(sho)-28 b(w)249 b(that)e(for)g(some)h(w)-11
b(orkloads,)254 b(the)248 b(probabilistic)0 7749 y(approach)280
b(rarely)d(lea)-22 b(v)-17 b(es)278 b(the)g(\002le)f(system)g
(inconsistent.)1107 9241 y(Unfortunately)-72 b(,)355
b(a)338 b(probabilistic)g(approach)j(is)336 b(insuf)-28
b(\002cient)0 10569 y(for)431 b(man)-17 b(y)433 b(applications,)471
b(where)432 b(certainty)g(in)f(crash)g(reco)-17 b(v-)0
11897 y(ery)423 b(is)g(desired.)782 b(Indeed,)461 b(we)424
b(also)f(sho)-28 b(w)-72 b(,)460 b(for)423 b(some)h(w)-11
b(ork-)0 13226 y(loads,)597 b(that)532 b(the)h(chances)i(of)d
(inconsistenc)-17 b(y)535 b(are)e(high;)661 b(to)0 14554
y(realize)562 b(higher)-22 b(-le)-28 b(v)-17 b(el)562
b(application-le)-28 b(v)-17 b(el)565 b(consistenc)-17
b(y)563 b(\()p FL(i.e)-17 b(.)p FM(,)0 15882 y(something)360
b(a)g(DBMS)g(might)f(desire\),)379 b(the)360 b(\002le)f(system)g(must)0
17211 y(pro)-17 b(vide)508 b(something)f(more)g(than)g(probability)g
(and)g(chance.)0 18539 y(Thus,)409 b(in)382 b(this)g(paper)-44
b(,)409 b(we)383 b(introduce)h FL(optimistic)e(cr)-17
b(ash)383 b(con-)0 19867 y(sistency)p FM(,)409 b(a)382
b(ne)-28 b(w)384 b(approach)h(to)d(b)-22 b(uilding)383
b(a)g(crash-consistent)0 21196 y(journaling)486 b(\002le)e(system)g
(\(\247)11414 21196 y
SDict begin H.S end
11414 21196 a FM(4)11967 20441
y
SDict begin H.R end
11967 20441 a 11967 21196 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (section.4) cvn H.B /ANN pdfmark end
11967 21196 a FM(\).)965
b(This)484 b(optimistic)g(approach)0 22524 y(tak)-11
b(es)335 b(adv)-28 b(antage)339 b(of)c(the)g(f)-11 b(act)335
b(that)g(in)g(man)-17 b(y)336 b(cases,)350 b(ordering)0
23852 y(can)435 b(be)f(achie)-28 b(v)-17 b(ed)437 b(through)e(other)f
(means)g(and)h(that)e(crashes)0 25181 y(are)428 b(rare)f(e)-28
b(v)-17 b(ents)429 b(\(similar)d(to)h(optimistic)g(concurrenc)-17
b(y)431 b(con-)0 26509 y(trol)297 b([)2204 26509 y
SDict begin H.S end
2204
26509 a FM(12)3310 25754 y
SDict begin H.R end
3310 25754 a 3310 26509 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.herlihy1990apologizing) cvn H.B /ANN pdfmark end
3310 26509 a FM(,)3745 26524 y
SDict begin H.S end
3745 26524 a -15 x FM(16)4851
25754 y
SDict begin H.R end
4851 25754 a 4851 26509 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.kung1981optimistic) cvn H.B /ANN pdfmark end
4851 26509 a FM(]\).)405
b(Ho)-28 b(we)g(v)-17 b(er)-44 b(,)305 b(realizing)299
b(consistenc)-17 b(y)300 b(in)e(an)g(opti-)0 27837 y(mistic)c(f)-11
b(ashion)295 b(is)f(not)h(without)g(challenge;)306 b(we)295
b(thus)g(de)-28 b(v)-17 b(elop)0 29166 y(a)227 b(range)i(of)e(no)-17
b(v)g(el)229 b(techniques,)239 b(including)229 b(a)e(ne)-28
b(w)229 b(e)-17 b(xtension)229 b(of)0 30494 y(the)345
b(transactional)h(checksum)i([)12839 30509 y
SDict begin H.S end
12839 30509
a -15 x FM(23)13945 29739 y
SDict begin H.R end
13945 29739 a 13945 30494
a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.PrabhakaranEtAl05-SOSP) cvn H.B /ANN pdfmark end
13945 30494 a FM(])c(to)h(detect)h(data/metadata)0
31823 y(inconsistenc)-17 b(y)-72 b(,)287 b(delayed)f(reuse)e(of)f
(blocks)i(to)e(a)-22 b(v)g(oid)285 b(incorrect)0 33151
y(dangling)392 b(pointers,)418 b(and)391 b(a)f(selecti)-28
b(v)-17 b(e)392 b(data)f(journaling)g(tech-)0 34479 y(nique)280
b(to)f(handle)h(block)g(o)-17 b(v)g(erwrite)280 b(correctly)-72
b(.)349 b(The)280 b(combina-)0 35808 y(tion)335 b(of)h(these)f
(techniques)j(leads)e(to)f FL(both)h FM(high)h(performance)0
37136 y(and)456 b FL(deterministic)f FM(consistenc)-17
b(y;)546 b(in)454 b(the)i(rare)f(e)-28 b(v)-17 b(ent)457
b(that)e(a)0 38464 y(crash)573 b(does)h(occur)-44 b(,)648
b(optimistic)573 b(crash)g(consistenc)-17 b(y)575 b(either)0
39793 y(a)-22 b(v)g(oids)428 b(inconsistenc)-17 b(y)429
b(by)e(design)h(or)f(ensures)g(that)g(enough)0 41121
y(information)360 b(is)f(present)h(on)g(the)g(disk)f(to)h(detect)g(and)
h(discard)0 42449 y(improper)278 b(updates)g(during)g(reco)-17
b(v)g(ery)-72 b(.)1107 43941 y(W)-89 b(e)304 b(demonstrate)g(the)g(po)
-28 b(wer)305 b(of)e(optimistic)f(crash)i(consis-)0 45269
y(tenc)-17 b(y)372 b(through)f(the)f(design,)394 b(implementation,)h
(and)371 b(analysis)0 46598 y(of)295 b(the)h FL(optimistic)f(\002le)h
(system)f(\(OptFS\))p FM(.)g(OptFS)i(b)-22 b(uilds)295
b(upon)0 47926 y(the)386 b(principles)f(of)h(optimistic)e(crash)i
(consistenc)-17 b(y)388 b(to)d(imple-)0 49255 y(ment)426
b FL(optimistic)g(journaling)p FM(,)464 b(which)426 b(ensures)g(that)g
(the)g(\002le)0 50583 y(system)501 b(is)f(k)-11 b(ept)502
b(consistent)f(despite)h(crashes.)1015 b(Optimistic)0
51911 y(journaling)491 b(is)d(realized)i(as)f(a)h(set)f(of)g
(modi\002cations)i(to)e(the)0 53240 y(Linux)319 b(e)-17
b(xt4)320 b(\002le)e(system,)328 b(b)-22 b(ut)319 b(also)f(requires)g
(a)h(slight)e(change)0 54568 y(in)286 b(the)g(disk)g(interf)-11
b(ace)286 b(to)g(pro)-17 b(vide)288 b(what)e(we)h(refer)e(to)h(as)f
FL(asyn-)0 55896 y(c)-17 b(hr)-50 b(onous)290 b(dur)-17
b(ability)289 b(noti\002cation)p FM(,)j FL(i.e)-17 b(.)p
FM(,)290 b(a)f(noti\002cation)g(when)0 57225 y(a)250
b(write)f(is)f(persisted)h(in)h(addition)g(to)g(when)g(the)g(write)f
(has)h(sim-)0 58553 y(ply)284 b(been)g(recei)-28 b(v)-17
b(ed)286 b(by)e(the)g(disk.)361 b(W)-89 b(e)284 b(describe)g(the)g
(details)f(of)0 59881 y(our)f(implementation)j(\(\247)9911
59896 y
SDict begin H.S end
9911 59896 a -15 x FM(5)10464 59126 y
SDict begin H.R end
10464 59126
a 10464 59881 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (section.5) cvn H.B /ANN pdfmark end
10464 59881 a FM(\))d(and)h(study)g(its)e(performance)j
(\(\247)23801 59896 y
SDict begin H.S end
23801 59896 a -15 x FM(6)24354
59126 y
SDict begin H.R end
24354 59126 a 24354 59881 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (section.6) cvn H.B /ANN pdfmark end
24354 59881 a FM(\),)0
61210 y(sho)-28 b(wing)440 b(that)f(for)f(a)h(range)h(of)e(w)-11
b(orkloads,)480 b(OptFS)440 b(signi\002-)0 62538 y(cantly)420
b(outperforms)f(classic)f(Linux)i(e)-17 b(xt4)420 b(with)f(pessimistic)
0 63866 y(journaling,)616 b(and)549 b(sho)-28 b(wing)549
b(that)e(OptFS)i(performs)e(almost)0 65195 y(identically)481
b(to)f(Linux)h(e)-17 b(xt4)481 b(with)f(probabilistic)g(journaling)0
66523 y(while)277 b(ensuring)h(crash)g(consistenc)-17
b(y)-72 b(.)1107 68015 y(Central)691 b(to)g(the)f(performance)j
(bene\002ts)f(of)e(OptFS)i(is)0 69343 y(the)524 b(separation)h(of)f
(ordering)h(and)g(durability)-72 b(.)1084 b(By)524 b(allo)-28
b(w-)0 70672 y(ing)629 b(applications)i(to)e(order)g(writes)f(without)i
(incurring)g(a)0 72000 y(disk)409 b(\003ush,)442 b(and)409
b(request)h(durability)f(when)h(needed,)444 b(OptFS)27000
1107 y(enables)665 b(application-le)-28 b(v)-17 b(el)668
b(consistenc)-17 b(y)666 b(at)d(high)i(perfor)-22 b(-)27000
2435 y(mance.)912 b(OptFS)467 b(introduces)h(tw)-11 b(o)466
b(ne)-28 b(w)467 b(\002le-system)g(primi-)27000 3764
y(ti)-28 b(v)-17 b(es:)398 b FK(osync\(\))p FM(,)310
b(which)305 b(ensures)g(ordering)g(between)h(writes)27000
5092 y(b)-22 b(ut)435 b(only)h FL(e)-17 b(ventual)439
b FM(durability)-72 b(,)475 b(and)437 b FK(dsync\(\))p
FM(,)474 b(which)436 b(en-)27000 6420 y(sures)277 b(immediate)h
(durability)f(as)g(well)g(as)g(ordering.)28107 7770 y(W)-89
b(e)377 b(sho)-28 b(w)377 b(ho)-28 b(w)378 b(these)e(primiti)-28
b(v)-17 b(es)377 b(pro)-17 b(vide)378 b(a)f(useful)f(base)27000
9098 y(on)455 b(which)g(to)f(b)-22 b(uild)454 b(higher)-22
b(-le)-28 b(v)-17 b(el)457 b(application)f(consistenc)-17
b(y)27000 10426 y(semantics)358 b(\(\247)32645 10434
y
SDict begin H.S end
32645 10434 a -8 x FM(7)33198 9687 y
SDict begin H.R end
33198 9687 a 33198
10426 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (section.7) cvn H.B /ANN pdfmark end
33198 10426 a FM(\).)584 b(Speci\002cally)-72
b(,)379 b(we)358 b(sho)-28 b(w)358 b(ho)-28 b(w)359 b(a)e(document)
27000 11755 y(editing)396 b(application)i(can)f(use)e
FK(osync\(\))h FM(to)g(implement)g(the)27000 13083 y(atomic)329
b(update)h(of)e(a)g(\002le)h(\(via)f(a)g(create)h(and)g(then)g(atomic)g
(re-)27000 14412 y(name\),)406 b(and)380 b(ho)-28 b(w)380
b(the)g(SQLite)g(database)h(management)i(sys-)27000 15740
y(tem)315 b(can)h(use)g(\002le-system)f(pro)-17 b(vided)317
b(ordering)g(to)e(implement)27000 17068 y(ordered)361
b(transactions)g(with)f(e)-28 b(v)-17 b(entual)363 b(durability)-72
b(.)592 b(W)-89 b(e)361 b(sho)-28 b(w)27000 18397 y(that)473
b(these)g(primiti)-28 b(v)-17 b(es)473 b(are)f(suf)-28
b(\002cient)474 b(for)e(realizing)i(useful)27000 19725
y(application-le)-28 b(v)-17 b(el)280 b(consistenc)-17
b(y)279 b(at)e(high)h(performance.)28107 21074 y(Of)474
b(course,)524 b(the)475 b(optimistic)f(approach,)526
b(while)475 b(useful)g(in)27000 22403 y(man)-17 b(y)542
b(scenarios,)606 b(is)538 b(not)j(a)f(panacea.)1134 b(If)539
b(an)i(application)27000 23731 y(requires)451 b FL(immediate)-11
b(,)495 b(sync)-17 b(hr)-50 b(onous)454 b FM(durability)e(\(instead)f
(of)27000 25059 y(e)-28 b(v)-17 b(entual,)318 b(asynchronous)311
b(durability)e(with)f(consistent)h(order)-22 b(-)27000
26388 y(ing\),)434 b(an)403 b(e)-17 b(xpensi)-28 b(v)-17
b(e)406 b(cache)f(\003ush)e(is)f(still)f(required.)721
b(In)402 b(this)27000 27716 y(case,)395 b(applications)372
b(can)g(use)f FK(dsync\(\))f FM(to)h(request)g(durabil-)27000
29044 y(ity)417 b(\(as)g(well)g(as)h(ordering\).)765
b(Ho)-28 b(we)g(v)-17 b(er)-44 b(,)455 b(by)418 b(decoupling)i(the)
27000 30373 y(durability)310 b(of)f(writes)g(from)g(their)g(ordering,)
319 b(OptFS)310 b(pro)-17 b(vides)27000 31701 y(a)291
b(useful)f(middle)i(ground,)j(thus)c(realizing)g(high)h(performance)
27000 33030 y(and)254 b(meaningful)h(crash)e(consistenc)-17
b(y)255 b(for)d(man)-17 b(y)254 b(applications.)27000
33269 y
SDict begin H.S end
27000 33269 a 27000 33269 a
SDict begin 12 H.A end
27000 33269 a 27000
33269 a
SDict begin [/View [/XYZ H.V]/Dest (section.2) cvn /DEST pdfmark end
27000 33269 a 2278 x FN(2)1594 b(P)-32 b(essimistic)398
b(Crash)h(Consistency)27000 37517 y FM(T)-89 b(o)312
b(understand)h(the)e(optimistic)g(approach)j(to)d(journaling,)320
b(we)27000 38845 y(\002rst)428 b(describe)j(standard)f
FL(pessimistic)e(cr)-17 b(ash)430 b(consistency)h FM(in)27000
40174 y(journaling)363 b(\002le)f(systems.)595 b(T)-89
b(o)363 b(do)f(so,)382 b(we)362 b(describe)g(the)g(nec-)27000
41502 y(essary)310 b(disk)g(support)h(\()p FL(i.e)-17
b(.)p FM(,)317 b(cache-\003ushing)d(commands\))e(and)27000
42831 y(details)278 b(on)h(ho)-28 b(w)279 b(such)g(crash)g(consistenc)
-17 b(y)280 b(operates.)348 b(W)-89 b(e)279 b(then)27000
44159 y(demonstrate)419 b(the)f(ne)-17 b(g)-6 b(ati)-28
b(v)-17 b(e)422 b(performance)e(impact)e(of)g(cache)27000
45487 y(\003ushing)278 b(during)g(pessimistic)f(journaling.)27000
45727 y
SDict begin H.S end
27000 45727 a 27000 45727 a
SDict begin 12 H.A end
27000 45727 a 27000
45727 a
SDict begin [/View [/XYZ H.V]/Dest (subsection.2.1) cvn /DEST pdfmark
end
27000 45727 a 1835 x FF(2.1)1329 b(Disk)331 b(Interface)27000
49397 y FM(F)-17 b(or)297 b(the)f(purposes)h(of)e(this)g(discussion,)
301 b(we)296 b(assume)h(the)f(pres-)27000 50725 y(ence)373
b(of)f(a)g(disk-le)-28 b(v)-17 b(el)373 b(cache)g(\003ush)g(command.)
629 b(In)372 b(the)g(A)-123 b(T)-103 b(A)27000 52054
y(f)-11 b(amily)361 b(of)g(dri)-28 b(v)-17 b(es,)383
b(this)360 b(is)g(referred)h(to)g(as)g(the)h(\223\003ush)g(cache\224)
27000 53382 y(command;)429 b(in)377 b(SCSI)g(dri)-28
b(v)-17 b(es,)403 b(it)376 b(is)g(kno)-28 b(wn)379 b(as)e
(\223synchronize)27000 54710 y(cache\224.)439 b(Both)308
b(operations)i(ha)-22 b(v)-17 b(e)309 b(similar)e(semantics,)316
b(forcing)27000 56039 y(all)383 b(pending)j(dirty)d(writes)g(in)g(the)h
(disk)f(to)h(be)g(written)f(to)g(the)27000 57367 y(surf)-11
b(ace.)425 b(Note)305 b(that)f(a)h(\003ush)g(can)g(be)g(issued)g(as)f
(a)g(separate)h(re-)27000 58695 y(quest,)244 b(or)235
b(as)f(part)i(of)e(a)i(write)e(to)h(a)g(gi)-28 b(v)-17
b(en)238 b(block)e FL(D)p FM(;)249 b(in)235 b(the)g(latter)27000
60024 y(case,)278 b(pending)h(writes)d(are)h(\003ushed)i(before)f(the)f
(write)g(to)g FL(D)p FM(.)28107 61373 y(Some)526 b(\002ner)-22
b(-grained)526 b(controls)e(also)g(e)-17 b(xist.)1085
b(F)-17 b(or)525 b(e)-17 b(xam-)27000 62702 y(ple,)360
b(\223force)344 b(unit)f(access\224)i(\(FU)-44 b(A\))342
b(commands)j(read)f(or)f(write)27000 64030 y(around)376
b(the)f(cache)i(entirely)-72 b(.)636 b(FU)-44 b(As)374
b(are)h(often)g(used)g(in)g(tan-)27000 65358 y(dem)365
b(with)f(\003ush)h(commands;)410 b(for)364 b(e)-17 b(xample,)388
b(to)364 b(write)g FL(A)g FM(be-)27000 66687 y(fore)255
b FL(B)p FM(,)k(b)-22 b(ut)255 b(to)g(also)g(ensure)h(that)f(both)h
FL(A)f FM(and)h FL(B)f FM(are)g(durable,)261 b(a)27000
68015 y(client)290 b(might)f(write)g FL(A)p FM(,)k(then)d(write)f
FL(B)g FM(with)h(both)g(cache)h(\003ush-)27000 69343
y(ing)341 b(and)h(FU)-44 b(A)341 b(enabled;)374 b(this)340
b(ensures)h(that)g(when)h FL(B)e FM(reaches)27000 70672
y(the)301 b(dri)-28 b(v)-17 b(e,)307 b FL(A)301 b FM(\(and)h(other)f
(dirty)f(data\))h(will)f(be)h(forced)g(to)g(disk;)27000
72000 y(subsequently)-72 b(,)279 b FL(B)e FM(will)f(be)i(forced)g(to)f
(disk)g(due)h(to)f(the)g(FU)-44 b(A.)27000 72240 y
SDict begin H.S end
27000
72240 a 27000 72240 a
SDict begin 12 H.A end
27000 72240 a 27000 72240 a
SDict begin [/View [/XYZ H.V]/Dest (subsection.2.2) cvn /DEST pdfmark
end
27000
72240 a eop end
%%Page: 3 3
TeXDict begin 3 2 bop 0 0 a
SDict begin /product where{pop product(Distiller)search{pop pop pop
version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
grestore}if}{pop}ifelse}{pop}ifelse}if end
0 0 a -111 -111 a
SDict begin H.S end
-111 -111
a -111 -111 a
SDict begin H.R end
-111 -111 a -111 -111 a
SDict begin [/View [/XYZ H.V]/Dest (page.3) cvn /DEST pdfmark end
-111 -111 a 0 1107
a FF(2.2)1329 b(P)-27 b(essimistic)331 b(J)-20 b(our)g(naling)0
2915 y FM(Gi)-28 b(v)-17 b(en)443 b(the)f(disk)f(interf)-11
b(ace)442 b(described)g(abo)-17 b(v)g(e,)485 b(we)442
b(no)-28 b(w)442 b(de-)0 4243 y(scribe)331 b(ho)-28 b(w)332
b(a)f(journaling)i(\002le)e(system)g(safely)g(commits)g(data)0
5572 y(to)294 b(disk)g(in)g(order)h(to)f(maintain)h(consistenc)-17
b(y)296 b(in)e(the)g(e)-28 b(v)-17 b(ent)297 b(of)d(a)0
6900 y(system)331 b(crash.)507 b(W)-89 b(e)332 b(base)g(our)g
(discussion)g(on)g(ordered-mode)0 8228 y(Linux)373 b(e)-17
b(xt3)373 b(and)g(e)-17 b(xt4)373 b([)9877 8243 y
SDict begin H.S end
9877
8243 a -15 x FM(34)10983 7473 y
SDict begin H.R end
10983 7473 a 10983 8228
a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.TsoTweedie02-Ext23) cvn H.B /ANN pdfmark end
10983 8228 a FM(,)11467 8243 y
SDict begin H.S end
11467 8243 a -15 x FM(35)12573
7473 y
SDict begin H.R end
12573 7473 a 12573 8228 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Tweedie98-JournalingExt2) cvn H.B /ANN pdfmark end
12573 8228 a FM(],)396
b(though)373 b(much)g(of)f(what)g(we)0 9557 y(say)298
b(is)f(applicable)j(to)e(other)g(journaling)i(\002le)e(systems)f(such)i
(as)0 10885 y(SGI)346 b(XFS)h([)4874 10900 y
SDict begin H.S end
4874 10900
a -15 x FM(32)5980 10130 y
SDict begin H.R end
5980 10130 a 5980 10885 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.SweeneyEtAl96-XFS) cvn H.B /ANN pdfmark end
5980 10885 a FM(],)364 b(W)-44 b(indo)-28 b(ws)347 b(NTFS)g([)14928
10893 y
SDict begin H.S end
14928 10893 a -8 x FM(27)16034 10130 y
SDict begin H.R end
16034
10130 a 16034 10885 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Solomon98-NT) cvn H.B /ANN pdfmark end
16034 10885 a FM(],)364 b(and)347
b(IBM)f(JFS)h([)23802 10900 y
SDict begin H.S end
23802 10900 a -15 x FM(3)24355
10130 y
SDict begin H.R end
24355 10130 a 24355 10885 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Best00-JFS) cvn H.B /ANN pdfmark end
24355 10885 a FM(].)0
12213 y(In)468 b(ordered)i(mode,)518 b(\002le-system)469
b(metadata)h(is)e(journaled)i(to)0 13542 y(maintain)256
b(its)e(consistenc)-17 b(y;)264 b(data)255 b(is)f(not)i(journaled,)k
(as)255 b(writing)0 14870 y(each)c(data)f(block)h(twice)f(reduces)h
(performance)h(substantially)-72 b(.)1107 16201 y(When)367
b(an)h(application)g(updates)g(\002le-system)e(state,)388
b(either)0 17529 y(metadata,)256 b(user)249 b(data,)255
b(or)249 b(\(often\))g(both)g(need)i(to)e(be)h(updated)h(in)0
18857 y(a)332 b(persistent)f(manner)-61 b(.)508 b(F)-17
b(or)332 b(e)-17 b(xample,)347 b(when)333 b(a)e(user)h(appends)0
20186 y(a)273 b(block)g(to)f(a)h(\002le,)g(a)g(ne)-28
b(w)273 b FL(data)h FM(block)f(\()p FL(D)p FM(\))f(must)g(be)h(written)
f(to)0 21514 y(disk)277 b(\(at)g(some)g(point\);)g(in)g(addition,)i(v)
-28 b(arious)278 b(pieces)g(of)e FL(meta-)0 22842 y(data)423
b FM(\()p FL(M)44 b FM(\))421 b(must)h(be)h(updated)i(as)d(well,)458
b(including)423 b(the)g(\002le')-61 b(s)0 24171 y(inode)278
b(and)h(a)e(bitmap)h(marking)g(the)f(block)i(as)d(allocated.)1107
25501 y(W)-89 b(e)292 b(refer)g(to)g(the)g(atomic)h(update)h(of)d
(metadata)j(to)e(the)g(jour)-22 b(-)0 26830 y(nal)268
b(as)g(a)g FL(tr)-17 b(ansaction)p FM(.)342 b(Before)268
b(committing)h(a)f(transaction)h FL(T)141 b(x)0 28158
y FM(to)279 b(the)g(journal,)h(the)f(\002le)h(system)e(\002rst)g
(writes)g(an)-17 b(y)281 b(data)f(blocks)0 29486 y(\()p
FL(D)p FM(\))427 b(associated)h(with)g(the)g(transaction)g(to)g(their)f
(\002nal)h(desti-)0 30815 y(nations;)371 b(writing)339
b(data)h(before)g(transaction)g(commit)g(ensures)0 32143
y(that)321 b(committed)h(metadata)g(does)f(not)g(point)g(to)g(g)-6
b(arbage.)477 b(Af-)0 33471 y(ter)393 b(these)i(data)g(writes)e
(complete,)424 b(the)395 b(\002le)f(system)g(uses)f(the)0
34800 y(journal)250 b(to)f(log)h(metadata)h(updates;)260
b(we)250 b(refer)f(to)g(these)h(journal)0 36128 y(writes)232
b(as)h FL(J)4556 36294 y FD(M)5327 36128 y FM(.)328 b(After)233
b(these)g(writes)f(are)i(persisted,)241 b(the)233 b(\002le)h(sys-)0
37456 y(tem)278 b(issues)e(a)i(write)f(to)h(a)g(commit)g(block)h(\()p
FL(J)17276 37626 y FD(C)17896 37456 y FM(\);)e(when)i(the)f(disk)0
38785 y(persists)394 b FL(J)4138 38955 y FD(C)4758 38785
y FM(,)424 b(the)396 b(transaction)g FL(T)141 b(x)399
b FM(is)394 b(said)h(to)g(be)h FL(committed)p FM(.)0
40113 y(Finally)-72 b(,)256 b(after)249 b(the)h(commit,)255
b(the)c(\002le)f(system)f(is)g(free)g(to)h(update)0 41441
y(the)226 b(metadata)h(blocks)g(in)e(place)i(\()p FL(M)44
b FM(\);)242 b(if)225 b(a)g(crash)h(occurs)h(during)0
42770 y(this)419 b FL(c)-17 b(hec)-22 b(kpointing)423
b FM(process,)455 b(the)419 b(\002le)h(system)f(can)i(reco)-17
b(v)g(er)0 44098 y(simply)277 b(by)h(scanning)i(the)e(journal)g(and)g
(replaying)h(committed)0 45427 y(transactions.)344 b(Details)276
b(can)j(be)e(found)i(else)-28 b(where)278 b([)20358 45427
y
SDict begin H.S end
20358 45427 a FM(22)21464 44672 y
SDict begin H.R end
21464 44672 a 21464
45427 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.PrabhakaranEtAl05-Usenix) cvn H.B /ANN pdfmark end
21464 45427 a FM(,)21885 45442 y
SDict begin H.S end
21885 45442
a -15 x FM(35)22991 44672 y
SDict begin H.R end
22991 44672 a 22991 45427
a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Tweedie98-JournalingExt2) cvn H.B /ANN pdfmark end
22991 45427 a FM(].)1107 46757 y(W)-89 b(e)336 b(thus)g(ha)-22
b(v)-17 b(e)338 b(the)e(follo)-28 b(wing)337 b(set)f(of)f(ordered)j
(writes)d(that)0 48085 y(must)438 b(tak)-11 b(e)439 b(place:)667
b FL(D)438 b FM(before)h FL(J)13136 48251 y FD(M)14346
48085 y FM(before)g FL(J)18033 48255 y FD(C)19091 48085
y FM(before)h FL(M)44 b FM(,)478 b(or)0 49414 y(more)444
b(simply:)676 b FL(D)339 b FC(!)f FL(J)9762 49580 y FD(M)10872
49414 y FC(!)g FL(J)12739 49584 y FD(C)13698 49414 y
FC(!)h FL(M)44 b FM(.)842 b(Note)445 b(that)e FL(D)p
FM(,)485 b FL(J)23952 49580 y FD(M)24723 49414 y FM(,)0
50742 y(and)329 b FL(M)372 b FM(can)328 b(represent)h(more)f(than)h(a)e
(single)h(block)h(\(in)f(lar)-20 b(ger)0 52070 y(transactions\),)422
b(whereas)394 b FL(J)10796 52240 y FD(C)11809 52070 y
FM(is)d(al)-11 b(w)g(ays)394 b(a)f(single)g(sector)g(\(for)0
53399 y(the)406 b(sak)-11 b(e)406 b(of)f(write)f(atomicity\).)729
b(T)-89 b(o)406 b(achie)-28 b(v)-17 b(e)408 b(this)d(ordering,)0
54727 y(the)298 b(\002le)g(system)f(issues)g(a)h(cache)i(\003ush)e
(where)-28 b(v)-17 b(er)300 b(order)e(is)e(re-)0 56055
y(quired)278 b(\()p FL(i.e)-17 b(.)p FM(,)276 b(where)i(there)g(is)e(a)
h FC(!)g FM(symbol\).)1107 57386 y(Optimizations)301
b(to)g(this)e(protocol)j(ha)-22 b(v)-17 b(e)303 b(been)f(suggested)g
(in)0 58714 y(the)251 b(literature,)256 b(some)251 b(of)g(which)h(ha)
-22 b(v)-17 b(e)252 b(been)h(realized)f(in)e(Linux)0
60043 y(e)-17 b(xt4.)757 b(F)-17 b(or)416 b(e)-17 b(xample,)451
b(some)415 b(ha)-22 b(v)-17 b(e)417 b(noted)f(that)f(the)g(ordering)0
61371 y(between)268 b(data)f(and)g(journaled)h(metadata)g(\()p
FL(D)235 b FC(!)h FL(J)19846 61537 y FD(M)20617 61371
y FM(\))266 b(is)f(super)-22 b(-)0 62699 y(\003uous;)453
b(remo)-17 b(ving)396 b(that)e(ordering)h(can)h(sometimes)e(impro)-17
b(v)g(e)0 64028 y(performance)279 b(\()p FL(D)p FC(j)p
FL(J)7808 64194 y FD(M)8825 64028 y FC(!)246 b FL(J)10600
64198 y FD(C)11466 64028 y FC(!)g FL(M)44 b FM(\))277
b([)14800 64028 y
SDict begin H.S end
14800 64028 a FM(22)15906 63273 y
SDict begin H.R end
15906
63273 a 15906 64028 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.PrabhakaranEtAl05-Usenix) cvn H.B /ANN pdfmark end
15906 64028 a FM(].)1107 65358
y(Others)987 b(ha)-22 b(v)-17 b(e)989 b(suggested)g(a)f
(\223transactional)h(check-)0 66687 y(sum\224)285 b([)2990
66702 y
SDict begin H.S end
2990 66702 a -15 x FM(23)4096 65932 y
SDict begin H.R end
4096 65932
a 4096 66687 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.PrabhakaranEtAl05-SOSP) cvn H.B /ANN pdfmark end
4096 66687 a FM(])f(which)h(can)g(be)g(used)g(to)f(remo)
-17 b(v)g(e)287 b(the)d(ordering)h(be-)0 68015 y(tween)321
b(the)e(journal)i(metadata)g(and)f(journal)h(commit)f(\()p
FL(J)22312 68181 y FD(M)23402 68015 y FM(and)0 69343
y FL(J)422 69513 y FD(C)1043 69343 y FM(\).)500 b(In)329
b(the)h(normal)h(case,)343 b(the)330 b(\002le)g(system)f(cannot)j
(issue)d FL(J)24229 69509 y FD(M)0 70672 y FM(and)250
b FL(J)2269 70842 y FD(C)3138 70672 y FM(together)-44
b(,)255 b(because)250 b(the)f(dri)-28 b(v)-17 b(e)250
b(might)f(reorder)g(them;)259 b(in)0 72000 y(that)g(case,)k
FL(J)4785 72170 y FD(C)5664 72000 y FM(might)c(hit)g(the)g(disk)g
(\002rst,)i(at)e(which)h(point)g(a)f(sys-)27000 1107
y(tem)414 b(crash)h(\(or)f(po)-28 b(wer)416 b(loss\))d(w)-11
b(ould)415 b(lea)-22 b(v)-17 b(e)416 b(that)f(transaction)27000
2435 y(in)439 b(a)f(seemingly)i(committed)g(state)e(b)-22
b(ut)439 b(with)g(g)-6 b(arbage)441 b(con-)27000 3764
y(tents.)372 b(By)287 b(computing)i(a)d(checksum)j(o)-17
b(v)g(er)289 b(the)e(entire)g(transac-)27000 5092 y(tion)335
b(and)h(placing)g(its)e(v)-28 b(alue)337 b(in)d FL(J)40286
5262 y FD(C)40907 5092 y FM(,)349 b(the)335 b(writes)f(to)h
FL(J)47919 5258 y FD(M)49024 5092 y FM(and)h FL(J)51379
5262 y FD(C)27000 6420 y FM(can)283 b(be)f(issued)g(together)-44
b(,)283 b(impro)-17 b(ving)284 b(performance;)i(with)281
b(the)27000 7749 y(checksum)220 b(present,)229 b(crash)218
b(reco)-17 b(v)g(ery)220 b(can)e(a)-22 b(v)g(oid)218
b(replay)g(of)f(im-)27000 9077 y(properly)245 b(committed)g
(transactions.)333 b(W)-44 b(ith)243 b(this)h(optimization,)27000
10405 y(the)304 b(ordering)h(is)d FL(D)261 b FC(!)p 36179
9451 2584 45 v 261 w FL(J)36642 10571 y FD(M)37413 10405
y FC(j)p FL(J)38142 10575 y FD(C)39023 10405 y FC(!)g
FL(M)348 b FM(\(where)304 b(the)g(bar)g(o)-17 b(v)g(er)305
b(the)27000 11734 y(journal)268 b(updates)i(indicates)e(their)g
(protection)h(via)f(checksum\).)28107 13146 y(Interestingly)-72
b(,)259 b(these)c(tw)-11 b(o)255 b(optimizations)h(do)f(not)g(combine,)
27000 14474 y FL(i.e)-17 b(.)p FM(,)447 b FL(D)p FC(j)p
30166 13520 V FL(J)30629 14640 y FD(M)31400 14474 y FC(j)p
FL(J)32129 14644 y FD(C)33071 14474 y FC(!)322 b FL(M)458
b FM(is)412 b(not)i(correct;)482 b(if)413 b(the)h(\002le)g(system)f
(is-)27000 15802 y(sues)403 b FL(D)p FM(,)435 b FL(J)31283
15968 y FD(M)32054 15802 y FM(,)g(and)405 b FL(J)35190
15972 y FD(C)36214 15802 y FM(together)-44 b(,)435 b(it)403
b(is)g(possible)g(that)h FL(J)49227 15968 y FD(M)50402
15802 y FM(and)27000 17131 y FL(J)27422 17301 y FD(C)28418
17131 y FM(reach)376 b(the)g(disk)f(\002rst.)637 b(In)375
b(this)f(case,)401 b(the)375 b(metadata)i(com-)27000
18459 y(mits)426 b(before)i(the)g(data;)503 b(if)426
b(a)h(crash)h(occurs)g(before)g(the)g(data)27000 19787
y(is)e(written,)464 b(an)428 b(inode)g(\(or)f(indirect)g(block\))h(in)f
(the)h(commit-)27000 21116 y(ted)k(transaction)i(could)f(end)g(up)g
(pointing)g(to)f(g)-6 b(arbage)435 b(data.)27000 22444
y(Oddly)-72 b(,)389 b(e)-17 b(xt4)368 b(allo)-28 b(ws)367
b(this)e(situation)h(with)h(the)f(\223right\224)h(set)f(of)27000
23772 y(mount)278 b(options.)28107 25184 y(W)-89 b(e)326
b(should)g(note)h(that)e(one)i(other)f(important)g(ordering)g(e)-17
b(x-)27000 26512 y(ists)280 b(among)k(updates,)h(speci\002cally)e(the)g
(order)f FL(between)i FM(trans-)27000 27841 y(actions;)399
b(journaling)359 b(\002le)g(systems)e(assume)i(transactions)f(are)27000
29169 y(committed)300 b(to)e(disk)g(in)h(order)g(\()p
FL(i.e)-17 b(.)p FM(,)303 b FL(T)141 b(x)42662 29335
y FD(i)43203 29169 y FC(!)258 b FL(T)141 b(x)45815 29336
y FD(i)p Fy(+)p Fz(1)47144 29169 y FM(\))298 b([)48180
29184 y
SDict begin H.S end
48180 29184 a -15 x FM(35)49286 28414 y
SDict begin H.R end
49286
28414 a 49286 29169 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Tweedie98-JournalingExt2) cvn H.B /ANN pdfmark end
49286 29169 a FM(].)408 b(Not)27000
30498 y(follo)-28 b(wing)347 b(this)f(ordering)h(could)g(lead)g(to)f
(odd)i(results)d(during)27000 31826 y(crash)304 b(reco)-17
b(v)g(ery)-72 b(.)427 b(F)-17 b(or)305 b(e)-17 b(xample,)313
b(a)304 b(block)i FL(B)e FM(could)h(ha)-22 b(v)-17 b(e)306
b(been)27000 33154 y(freed)422 b(in)g FL(T)141 b(x)32225
33320 y FD(i)32509 33154 y FM(,)458 b(and)423 b(then)g(reused)g(in)f
FL(T)141 b(x)43433 33321 y FD(i)p Fy(+)p Fz(1)44762 33154
y FM(;)494 b(in)422 b(this)g(case,)459 b(a)27000 34483
y(crash)426 b(after)f FL(T)141 b(x)33461 34650 y FD(i)p
Fy(+)p Fz(1)35216 34483 y FM(committed)427 b(b)-22 b(ut)426
b(before)h FL(T)141 b(x)46695 34649 y FD(i)47404 34483
y FM(did)426 b(w)-11 b(ould)27000 35811 y(lead)278 b(to)f(a)g(state)g
(where)h FL(B)f FM(is)f(allocated)j(to)e(tw)-11 b(o)277
b(\002les.)28107 37223 y(Finally)-72 b(,)240 b(and)230
b(most)g(importantly)-72 b(,)240 b(we)230 b(dra)-17 b(w)230
b(attention)h(to)e(the)27000 38551 y FL(pessimistic)343
b FM(nature)j(of)e(this)g(approach.)547 b(Whene)-28 b(v)-17
b(er)348 b(ordering)27000 39879 y(is)270 b(required,)i(an)f(e)-17
b(xpensi)-28 b(v)-17 b(e)275 b(cache)d(\003ush)f(is)f(issued,)i(thus)e
(forc-)27000 41208 y(ing)296 b FL(all)f FM(pending)i(writes)e(to)g
(disk,)300 b(when)c(perhaps)h(only)f(a)g(sub-)27000 42536
y(set)279 b(of)g(them)h(needed)i(to)e(be)g(\003ushed.)352
b(In)279 b(addition,)i(the)f(\003ushes)27000 43864 y(are)289
b(issued)g(e)-28 b(v)-17 b(en)292 b(though)e(the)g(writes)e(may)h(ha)
-22 b(v)-17 b(e)291 b(gone)g(to)e(disk)27000 45193 y(in)413
b(the)g(correct)g(order)g(an)-17 b(yho)-28 b(w)-72 b(,)450
b(depending)415 b(on)f(scheduling,)27000 46521 y(w)-11
b(orkload,)449 b(and)415 b(other)f(details;)482 b(\003ushes)414
b(induce)i(e)-17 b(xtra)414 b(w)-11 b(ork)27000 47850
y(that)438 b(may)h(not)f(be)h(necessary)-72 b(.)828 b(Finally)-72
b(,)479 b(and)439 b(perhaps)g(most)27000 49178 y(harmful,)246
b(is)237 b(the)h(f)-11 b(act)238 b(that)g(the)g(b)-22
b(urden)240 b(of)e(\003ushes)g(is)f(added)j(de-)27000
50506 y(spite)295 b(the)g(f)-11 b(act)294 b(that)h(crashes)h(are)f
(rare,)k(thus)294 b(e)-17 b(xacting)298 b(a)d(hea)-22
b(vy)27000 51835 y(cost)277 b(in)g(anticipation)i(of)e(an)g(e)-17
b(xtremely)279 b(occasional)g(e)-28 b(v)-17 b(ent.)27000
52074 y
SDict begin H.S end
27000 52074 a 27000 52074 a
SDict begin 12 H.A end
27000 52074 a 27000
52074 a
SDict begin [/View [/XYZ H.V]/Dest (subsection.2.3) cvn /DEST pdfmark
end
27000 52074 a 1978 x FF(2.3)1329 b(Flushing)331
b(P)-27 b(erf)-33 b(ormance)330 b(Impact)27000 55976
y FM(T)-89 b(o)441 b(better)g(understand)h(the)f(performance)h(impact)f
(of)g(cache)27000 57305 y(\003ushing)342 b(during)g(pessimistic)e
(journaling,)358 b(we)341 b(no)-28 b(w)343 b(perform)27000
58633 y(a)413 b(simple)g(e)-17 b(xperiment.)753 b(Speci\002cally)-72
b(,)450 b(we)413 b(run)g(the)g(V)-123 b(armail)27000
59961 y(benchmark)243 b(atop)e(Linux)h(e)-17 b(xt4,)249
b(both)241 b(with)f(and)i(without)f(cache)27000 61290
y(\003ushing;)559 b(with)464 b(cache)i(\003ushing)f(enabled,)513
b(we)465 b(also)f(enable)27000 62618 y(transactional)218
b(checksums)h(to)e(see)g(their)f(performance)j(impact.)27000
63946 y(V)-123 b(armail)404 b(is)f(a)g(good)j(choice)f(here)g(as)e(it)g
(simulates)g(an)h(email)27000 65275 y(serv)-17 b(er)336
b(and)g(includes)g(man)-17 b(y)337 b(small)e(synchronous)i(updates)g
(to)27000 66603 y(disk,)413 b(thus)386 b(stressing)f(the)h(journaling)h
(machinery)h(described)27000 67932 y(abo)-17 b(v)g(e.)640
b(The)376 b(e)-17 b(xperimental)378 b(setup)d(for)f(this)h(benchmark)j
(and)27000 69260 y(con\002guration)280 b(is)c(described)j(in)e(more)g
(detail)h(in)e(Section)49875 69275 y
SDict begin H.S end
49875 69275 a -15
x FM(6)50428 68505 y
SDict begin H.R end
50428 68505 a 50428 69260 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (section.6) cvn H.B /ANN pdfmark end
50428
69260 a FM(.)28107 70672 y(From)378 b(Figure)34150 70672
y
SDict begin H.S end
34150 70672 a FM(1)34703 69917 y
SDict begin H.R end
34703 69917 a 34703
70672 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (figure.1) cvn H.B /ANN pdfmark end
34703 70672 a FM(,)402 b(we)378 b(can)g(observ)-17
b(e)379 b(the)e(follo)-28 b(wing.)645 b(First,)27000
72000 y(transactional)436 b(checksums)i(increase)e(performance)h
(slightly)-72 b(,)p eop end
%%Page: 4 4
TeXDict begin 4 3 bop 0 0 a
SDict begin /product where{pop product(Distiller)search{pop pop pop
version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
grestore}if}{pop}ifelse}{pop}ifelse}if end
0 0 a -111 -111 a
SDict begin H.S end
-111 -111
a -111 -111 a
SDict begin H.R end
-111 -111 a -111 -111 a
SDict begin [/View [/XYZ H.V]/Dest (page.4) cvn /DEST pdfmark end
-111 -111 a 2900
8000 a @beginspecial 0 @llx 0 @lly 300 @urx 125 @ury
1728 @rwi @setspecial
%%BeginDocument: Figs/bar-motivate.eps
%!PS-Adobe-2.0 EPSF-2.0
%%Title: bar.eps
%%Creator: zplot version:python version 0.1
%%CreationDate: 17:04:15 03/21/13 CDT
%%DocumentFonts: (atend)
%%BoundingBox: 0 0 300.0 125.0
%%Orientation: Portrait
%%EndComments
% zdraw dictionary
/zdict 256 dict def
zdict begin
/cpx 0 def
/cpy 0 def
/recordcp {currentpoint /cpy exch def /cpx exch def} bind def
/m {moveto} bind def
/l {lineto} bind def
/mr {rmoveto} bind def
/lr {rlineto} bind def
/np {newpath} bind def
/cp {closepath} bind def
/st {stroke} bind def
/fl {fill} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/slw {setlinewidth} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/sc {setrgbcolor} bind def
/sd {setdash} bind def
/lshow {show recordcp} def
/rshow {dup stringwidth pop neg 0 mr show recordcp} def
/cshow {dup stringwidth pop -2 div 0 mr show recordcp} def
end
zdict begin
gs
np
54.1666666667 25.0 m
54.1666666667 41.766 l
129.166666667 41.766 l
129.166666667 25.0 l
cp
clip
np
54.1666666667 25.0 m
54.1666666667 41.766 l
129.166666667 41.766 l
129.166666667 25.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
137.5 25.0 m
137.5 48.9038 l
212.5 48.9038 l
212.5 25.0 l
cp
clip
np
137.5 25.0 m
137.5 48.9038 l
212.5 48.9038 l
212.5 25.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
220.833333333 25.0 m
220.833333333 114.5938 l
295.833333333 114.5938 l
295.833333333 25.0 l
cp
clip
np
220.833333333 25.0 m
220.833333333 114.5938 l
295.833333333 114.5938 l
295.833333333 25.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
49.75 25.0 m
300.25 25.0 l
0.5 slw
st
gr
gs
np
50.0 24.75 m
50.0 125.25 l
0.5 slw
st
gr
gs
np
46.0 25.0 m
50.0 25.0 l
0.5 slw
st
gr
gs
np
46.0 45.0 m
50.0 45.0 l
0.5 slw
st
gr
gs
np
46.0 65.0 m
50.0 65.0 l
0.5 slw
st
gr
gs
np
46.0 85.0 m
50.0 85.0 l
0.5 slw
st
gr
gs
np
46.0 105.0 m
50.0 105.0 l
0.5 slw
st
gr
gs
np
46.0 125.0 m
50.0 125.0 l
0.5 slw
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
91.6666666667 18.0 m
gs
90.0 rotate
0.0 -3.6 mr
() rshow
gr
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
175.0 18.0 m
gs
90.0 rotate
0.0 -3.6 mr
() rshow
gr
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
258.333333333 18.0 m
gs
90.0 rotate
0.0 -3.6 mr
() rshow
gr
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 25.0 m
0.0 -3.6 mr
(0) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 45.0 m
0.0 -3.6 mr
(1000) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 65.0 m
0.0 -3.6 mr
(2000) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 85.0 m
0.0 -3.6 mr
(3000) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 105.0 m
0.0 -3.6 mr
(4000) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 125.0 m
0.0 -3.6 mr
(5000) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 14 scalefont setfont
12.4 75.0 m
gs
90.0 rotate
(Throughput (IO/s)) cshow
gr
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
91.6666666667 55.0 m
(Ext4) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10 scalefont setfont
91.6666666667 45.0 m
((Flush)) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
175.0 61.0 m
(Ext4) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10 scalefont setfont
175.0 51.0 m
((Flush+Checksum)) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
258.333333333 131.0 m
(Ext4) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10 scalefont setfont
258.333333333 121.0 m
((No Flush)) cshow
st
gr
% zdraw epilogue
end
showpage
%%Trailer
%%DocumentFonts: Helvetica
%%EndDocument
@endspecial 0 8103 a FM(Figure)248 b(1:)4327 8103 y
SDict begin H.S end
4327 8103 a 4327 8103 a
SDict begin H.R end
4327 8103 a 4327 8103 a
SDict begin [/View [/XYZ H.V]/Dest (figure.1) cvn /DEST pdfmark end
4327
8103 a Fx(The)g(Cost)f(of)g(Flushing)-17 b(.)668 b Fw(The)223
b(\002gur)-37 b(e)222 b(shows)f(the)i(per)-20 b(-)0 9298
y(formance)206 b(of)f(F)-45 b(ilebenc)-15 b(h)206 b(V)-111
b(armail)205 b(on)g(dif)-18 b(fer)-37 b(ent)206 b(e)-20
b(xt4)206 b(con\002gur)-15 b(ations.)0 10493 y(P)-80
b(erformance)250 b(incr)-37 b(eases)249 b(5X)g(when)g(\003ushes)g(ar)
-37 b(e)249 b(disabled.)0 12390 y FM(sho)-28 b(wing)476
b(ho)-28 b(w)476 b(remo)-17 b(ving)477 b(a)e(single)g(ordering)h(point)
g(\(via)f(a)0 13718 y(checksum\))213 b(can)g(help.)322
b(Second,)227 b(and)213 b(most)e(importantly)-72 b(,)225
b(there)0 15047 y(is)294 b(a)i(v)-28 b(ast)296 b(performance)i(impro)
-17 b(v)g(ement)298 b(when)f(cache)g(\003ushing)0 16375
y(is)360 b(turned)i(of)-28 b(f,)382 b(in)361 b(this)f(case)i(nearly)g
(a)f(f)-11 b(actor)361 b(of)g(\002)-28 b(v)-17 b(e.)597
b(Gi)-28 b(v)-17 b(en)0 17703 y(this)339 b(lar)-20 b(ge)340
b(performance)i(dif)-28 b(ference,)357 b(in)340 b(some)g
(installations,)0 19032 y(cache)469 b(\003ushing)g(is)d(disabled,)516
b(which)468 b(leads)g(to)f(the)h(follo)-28 b(w-)0 20360
y(ing)284 b(question:)359 b(what)284 b(kind)h(of)f(crash)g(consistenc)
-17 b(y)286 b(is)d(pro)-17 b(vided)0 21688 y(when)409
b(\003ushing)g(is)d(disabled?)737 b(Surprisingly)-72
b(,)441 b(the)408 b(answer)g(is)0 23017 y(not)277 b(\223none\224,)j(as)
d(we)g(no)-28 b(w)278 b(describe.)0 23173 y
SDict begin H.S end
0 23173 a
0 23173 a
SDict begin 12 H.A end
0 23173 a 0 23173 a
SDict begin [/View [/XYZ H.V]/Dest (section.3) cvn /DEST pdfmark end
0 23173 a 2430 x FN(3)1594
b(Pr)-29 b(obabilistic)399 b(Crash)g(Consistency)0 27617
y FM(Gi)-28 b(v)-17 b(en)659 b(the)e(potential)g(performance)i(g)-6
b(ains,)752 b(practitioners)0 28945 y(sometimes)608 b(for)-20
b(go)609 b(the)f(safety)h(pro)-17 b(vided)610 b(by)f(correct)f(im-)0
30274 y(plementations)455 b(that)e(issue)g(\003ushes)h(and)g(choose)h
(to)e(disable)0 31602 y(\003ushes)269 b([)3712 31617
y
SDict begin H.S end
3712 31617 a -15 x FM(8)4265 30847 y
SDict begin H.R end
4265 30847 a 4265
31602 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Corbet08-Barriers) cvn H.B /ANN pdfmark end
4265 31602 a FM(].)339 b(In)268 b(this)f(f)-11
b(ast)268 b(mode,)i(a)f(risk)e(of)h(\002le-system)g(incon-)0
32930 y(sistenc)-17 b(y)384 b(is)e(introduced;)437 b(if)382
b(a)h(crash)h(occurs)f(at)g(an)h(untimely)0 34259 y(point)372
b(in)g(the)g(update)i(sequence,)398 b(and)373 b(blocks)f(ha)-22
b(v)-17 b(e)374 b(been)f(re-)0 35587 y(ordered)306 b(across)e(ordering)
i(points,)311 b(crash)305 b(reco)-17 b(v)g(ery)307 b(as)d(run)h(by)0
36915 y(the)277 b(\002le)h(system)f(will)f(result)g(in)h(an)h
(inconsistent)g(\002le)f(system.)1107 38295 y(In)497
b(some)g(cases,)552 b(practitioners)497 b(observ)-17
b(ed)500 b(that)d(skipping)0 39623 y(\003ush)224 b(commands)h
(sometimes)f(did)f FL(not)h FM(lead)g(to)f(observ)-28
b(able)225 b(in-)0 40952 y(consistenc)-17 b(y)-72 b(,)246
b(despite)236 b(the)g(presence)h(of)f(\(occasional\))h(crashes.)0
42280 y(Such)286 b(commentary)h(led)d(to)h(a)f(debate)i(within)f(the)g
(Linux)g(com-)0 43608 y(munity)272 b(as)f(to)g(underlying)i(causes.)342
b(Long-time)273 b(k)-11 b(ernel)272 b(de)-28 b(v)-17
b(el-)0 44937 y(oper)309 b(Theodore)i(Ts'o)d(h)-6 b(ypothesized)312
b(wh)-6 b(y)310 b(such)f(consistenc)-17 b(y)0 46265 y(w)-11
b(as)304 b(often)h(achie)-28 b(v)-17 b(ed)308 b(despite)d(the)g(lack)g
(of)f(ordering)i(enforce-)0 47593 y(ment)278 b(by)f(the)h(\002le)f
(system)g([)10916 47608 y
SDict begin H.S end
10916 47608 a -15 x FM(33)12022
46839 y
SDict begin H.R end
12022 46839 a 12022 47593 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.TedTso08-LKML) cvn H.B /ANN pdfmark end
12022 47593 a FM(]:)2214
49834 y(I)247 b(suspect)g(the)h(real)g(reason)g(wh)-6
b(y)248 b(we)g(get)g(a)-17 b(w)-11 b(ay)249 b(with)2214
51162 y(it)312 b(so)g(much)i(with)f(e)-17 b(xt3)314 b(is)d(that)i(the)g
(journal)g(is)f(usu-)2214 52491 y(ally)231 b(contiguous)i(on)f(disk,)
240 b(hence,)i(when)232 b(you)g(write)2214 53819 y(to)300
b(the)g(journal,)305 b(it')-61 b(s)299 b(highly)h(unlik)-11
b(ely)301 b(that)f(commit)2214 55148 y(block)275 b(will)e(be)h(written)
g(and)h(the)f(blocks)h(before)f(the)2214 56476 y(commit)261
b(block)h(ha)-22 b(v)-17 b(e)263 b(not.)338 b(...)f(The)262
b(most)e(important)2214 57804 y(reason,)514 b(though,)h(is)465
b(that)i(the)f(blocks)h(which)g(are)2214 59133 y(dirty)277
b(don')-20 b(t)277 b(get)h(\003ushed)g(out)g(to)f(disk)g(right)g(a)-17
b(w)-11 b(ay!)1107 61373 y(What)291 b(the)g(Ts'o)f(Hypothesis)i(refers)
d(to)i(speci\002cally)h(is)e(tw)-11 b(o)0 62702 y(orderings:)433
b FL(J)5384 62868 y FD(M)6425 62702 y FC(!)271 b FL(J)8225
62872 y FD(C)9167 62702 y FM(and)322 b FL(J)11508 62872
y FD(C)12400 62702 y FC(!)270 b FL(M)44 b FM(.)476 b(In)322
b(the)f(\002rst)g(case,)333 b(Ts'o)0 64030 y(notes)413
b(that)g(the)g(disk)f(is)g(lik)-11 b(ely)413 b(to)f(commit)h
FL(J)18408 64200 y FD(C)19441 64030 y FM(to)g(disk)f(after)0
65358 y FL(J)463 65524 y FD(M)1661 65358 y FM(e)-28 b(v)-17
b(en)429 b(without)f(an)g(interv)-17 b(ening)429 b(\003ush)f(\(note)f
(that)g(this)g(is)0 66687 y(without)305 b(the)g(presence)h(of)e
(transactional)h(checksums\))h(due)g(to)0 68015 y FL(layout)394
b FM(and)g FL(sc)-17 b(heduling)p FM(;)453 b(disks)392
b(are)h(simply)g(unlik)-11 b(ely)394 b(to)e(re-)0 69343
y(order)284 b(tw)-11 b(o)284 b(writes)f(that)h(are)g(contiguous.)366
b(In)283 b(the)i(second)g(case,)0 70672 y(Ts'o)334 b(notes)g(that)g
FL(J)7449 70842 y FD(C)8348 70672 y FC(!)277 b FL(M)378
b FM(often)335 b(holds)f(without)h(a)f(\003ush)h(due)0
72000 y(to)266 b FL(time)p FM(;)j(the)e(checkpoint)i(traf)-28
b(\002c)267 b(that)f(commits)g FL(M)310 b FM(to)266 b(disk)g(of-)29900
7728 y @beginspecial 0 @llx 0 @lly 241 @urx 97 @ury 1728
@rwi @setspecial
%%BeginDocument: Figs/Pi-Graphical.eps
%!PS-Adobe-3.0 EPSF-3.0
%%HiResBoundingBox: 0.000000 0.000000 241.000000 97.000000
%APL_DSC_Encoding: UTF8
%APLProducer: (Version 10.7.4 (Build 11E53) Quartz PS Context)
%%Title: (Unknown)
%%Creator: (Unknown)
%%CreationDate: (Unknown)
%%For: (Unknown)
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%Pages: 1
%%BoundingBox: 0 0 241 97
%%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
/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
{ld}repeat pop
/SC{
/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
/cm {cmmtx astore CM concat}bd
/W{clip newpath}bd
/W*{eoclip newpath}bd
statusdict begin product end dup (HP) anchorsearch{
pop pop pop
true
}{
pop
(hp) anchorsearch{
pop pop true
}{
pop false
}ifelse
}ifelse
{
{
{
pop pop
(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
/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
}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
dict begin
{def} repeat
pop
/ImageType 1 def
/ImageMatrix[Width 0 0 Height neg 0 Height]def
currentdict dup/ImageMask known{ImageMask}{F}ifelse exch
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
}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{
exch t_array t_i get add exch moveto
/t_i t_i 1 add store
}bd
/y_proc{
t_array t_i get add moveto
/t_i t_i 1 add store
}bd
/xy_proc{
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
/cp_proc/x_proc ld
/base_charpath
{
/t_array xs
/t_i 0 def
{
t_c 0 3 -1 roll put
currentpoint
t_c cply sop
cp_proc
}forall
/t_array 0 def
}bd
/sop/stroke ld
/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{
findfont dup length dict copy dup
/Encoding 4 -1 roll put
definefont pop
}bd
/renmfont{
findfont dup length dict copy definefont pop
}bd
L3? dup dup{save exch}if
/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
{
begin
/nRange Range length 2 idiv store
/mulRange
[
0 1 nRange 1 sub
{
2 mul/nDim2 xd
Range nDim2 get
Range nDim2 1 add get
1 index sub
255 div
exch
}for
]store
end
}bd
/FunEval
{
begin
nRange mul /val xd
0 1 nRange 1 sub
{
dup 2 mul/nDim2 xd
val
add DataSource exch get
mulRange nDim2 get mul
mulRange nDim2 1 add get
add
}for
end
}bd
/max
{
2 copy lt
{exch pop}{pop}ifelse
}bd
/sh2
{
/Coords load aload pop
3 index 3 index translate
3 -1 roll sub
3 1 roll exch
sub
2 copy
dup mul exch dup mul add sqrt
dup
scale
atan
rotate
/Function load setupFunEval
clippath {pathbbox}stopped {0 0 0 0}if newpath
/ymax xs
/xmax xs
/ymin xs
/xmin xs
currentdict/Extend known
{
/Extend load 0 get
{
0/Function load FunEval sc
xmin ymin xmin abs ymax ymin sub rectfill
}if
}if
/Nsteps/Function load/Size get 0 get 1 sub store
/dx 1 Nsteps div store
gsave
/di ymax ymin sub store
/Function load
0 1 Nsteps
{
1 index FunEval sc
0 ymin dx di rectfill
dx 0 translate
}for
pop
grestore
currentdict/Extend known
{
/Extend load 1 get
{
Nsteps/Function load FunEval sc
1 ymin xmax 1 sub abs ymax ymin sub rectfill
}if
}if
}bd
/shp
{
4 copy
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
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
{
xmin dup mul ymin dup mul add sqrt
xmax dup mul ymin dup mul add sqrt
xmin dup mul ymax dup mul add sqrt
xmax dup mul ymax dup mul add sqrt
max max max
}bd
/sh3
{
/Coords load aload pop
5 index 5 index translate
3 -1 roll 6 -1 roll sub
3 -1 roll 5 -1 roll sub
2 copy dup mul exch dup mul add sqrt
/dx xs
2 copy 0 ne exch 0 ne or
{
exch atan rotate
}{
pop pop
}ifelse
/r2 xs
/r1 xs
/Function load
dup/Size get 0 get 1 sub
/Nsteps xs
setupFunEval
dx r2 add r1 lt{
0
}{
dx r1 add r2 le
{
1
}{
r1 r2 eq
{
2
}{
3
}ifelse
}ifelse
}ifelse
/sh3tp xs
clippath {pathbbox}stopped {0 0 0 0}if
newpath
/ymax xs
/xmax xs
/ymin xs
/xmin xs
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
{
0/Function load FunEval sc
{
{
dx 0 r1 360 0 arcn
xmin ymin moveto
xmax ymin lineto
xmax ymax lineto
xmin ymax lineto
xmin ymin lineto
eofill
}
{
r1 0 gt{0 0 r1 0 360 arc fill}if
}
{
0 r1 xmin abs r1 add neg r1 shp
}
{
r2 r1 gt{
0 r1
r1 neg r2 r1 sub div dx mul
0
shp
}{
0 r1 calcmaxs
dup
r2 add dx mul dx r1 r2 sub sub div
neg
exch 1 index
abs exch sub
shp
}ifelse
}
}sh3tp get exec
}if
}if
/d0 0 store
/r0 r1 store
/di dx Nsteps div store
/ri r2 r1 sub Nsteps div store
/Function load
0 1 Nsteps
{
1 index FunEval sc
d0 di add r0 ri add d0 r0 shp
{
d0 0 r0 a1 a0 arc
d0 di add 0 r0 ri add a0 a1 arcn
fill
d0 0 r0 a0 a1 arc
d0 di add 0 r0 ri add a1 a0 arcn
fill
}pop
/d0 d0 di add store
/r0 r0 ri add store
}for
pop
currentdict/Extend known
{
/Extend load 1 get r2 0 gt and
{
Nsteps/Function load FunEval sc
{
{
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
}
{
xmax abs r1 add r1 dx r1 shp
}
{
r2 r1 gt{
calcmaxs dup
r1 add dx mul dx r2 r1 sub sub div
exch 1 index
exch sub
dx r2
shp
}{
r1 neg r2 r1 sub div dx mul
0
dx
r2
shp
}ifelse
}
}
sh3tp get exec
}if
}if
}bd
/sh
{
begin
/ShadingType load dup dup 2 eq exch 3 eq or
{
gsave
newpath
/ColorSpace load scs
currentdict/BBox known
{
/BBox load aload pop
2 index sub
3 index
3 -1 roll exch sub
exch rectclip
}if
2 eq
{sh2}{sh3}ifelse
grestore
}{
pop
(DEBUG: shading type unimplemented\n)print flush
}ifelse
end
}bd
{restore}if not dup{save exch}if
L3?{
/sh/shfill ld
/csq/clipsave ld
/csQ/cliprestore ld
}if
{restore}if
end
setpacking
%%EndFile
%%EndProlog
%%BeginSetup
%%EndSetup
%%Page: 1 1
%%PageBoundingBox: 0 0 241 97
%%BeginPageSetup
cg_md begin
bp
sdmtx
%RBIBeginFontSubset: Helvetica
%!FontType1-1.0: Helvetica 1.0000.0.0000
14 dict begin/FontName /Helvetica def
/PaintType 0 def
/Encoding 256 array 0 1 255{1 index exch/.notdef put}for
dup 33 /one put
dup 34 /two put
dup 35 /five put
dup 36 /three put
dup 37 /four put
dup 38 /six put
dup 39 /t put
dup 40 /W put
dup 41 /space put
dup 42 /equal put
dup 43 /hyphen put
dup 44 /P put
dup 45 /i put
dup 46 /n put
dup 47 /c put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[2048 -1947 1 index div -985 2 index div 2961 3 index div 2297 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C0000036C6670676D000000000000040800000A1D676C79660000000000000E2800000C20686561640000000000001A4800000036686865610000000000001A8000000024686D74780000000000001AA4000000446C6F63610000000000001AE8000000246D6178700000000000001B0C00000020707265700000000000001B2C000003CF05C0001005BD00280580001A042F001F0000FFD90000FFDA0000FFD9FE55FFE605C70010FE6DFFF1033B000000B9000000B902FE3F3C00C0008D009B00AF000600A800C00028005E009800C9016A00B9015C00B400D6011E002E0080000400B8004C00CC01FFFFD1006600A400AF007400C2009500B1000C0028006D0015004C008E0125FF7A000C0040004C00620084FFA200240038008600BD0039005E008E00EDFFA9FFB300400052005500AA00AB00C200CB012302B10413FFAEFFE4000800510074008400AA00D1FF4CFFAF0012002C004200500051008400BE012503DAFF680018003B0098009C009F00A100C100EC018201B4FF68FF76FFD0FFE100020018001C00530053007D01B401E103AF0486FF9CFFEAFFFE001F0028002A00520060009300A300AA00AF00AF00C001000145016B0174019301950240028202B404850517FEFD00060029004700470048006F008800B400B900C400F200F901EF02180310037403C5FF35FFF3000B004B004C0052005500650076007600870087008E00AB00BB0106013001430150017D0194019501D3022A025502580277027802E6034E035C037903D3047304B2058C0598060BFEF5FFBBFFC7FFD50017001D005B0072007E009C00C200D000F400FA01030106011C0125013B0142015E015E0180019B02B901A101B9025001C001D002AA01DF01E301EF01FB0205020C0215022B0274029302AB02C202CE03690395039903DF03F5043E050205A105E5062507DBFE62FE89FECEFF3BFFE1FFF800030008002100390042004E005F0061006F00700034007F008E00AD00AD00AF00BD00C400C500C900C900C900E3011C00ED00F800F901000112011A0132014D014D014E014F01660169019E01BA01BA01BE01E301EF01F602000200020902110217021C02530262026D028002D50280031B032A034A035A03AF03AF03C803D603FB03FB04050413041504470449008C046D049A049A04A604A804B204CF0539053E054E055605800589058C036305D105D6067E068E06B206EF06F00728074C076F078C00B400C900C000C10000000000000000000000000004012400AF0032006E0063014401620096014301A10161008A00740064018801EF01700028FF5D037E0347023000AA00BE007B0062009A007D0089035C00A1FFD803AA00D70093006C0000008000A70442001D0597001D00820030002A
002A002A002A002A40292A292827262524232221201F1E1D1C1B1A191817161514131211100D0C0B0A090807060504030201002C4523466020B02660B004262348482D2C452346236120B02661B004262348482D2C45234660B0206120B04660B004262348482D2C4523462361B0206020B02661B02061B004262348482D2C45234660B0406120B06660B004262348482D2C4523462361B0406020B02661B04061B004262348482D2C0110203C003C2D2C20452320B0CD442320B8015A51582320B08D44235920B0ED51582320B04D44235920B09051582320B00D44235921212D2C20204518684420B001602045B04676688A4560442D2C01B9400000000A2D2C00B9000040000B2D2C2045B00043617D6818B0004360442D2C45B01A234445B01923442D2C2045B00325456164B050515845441B2121592D2C20B0032552582359212D2C69B04061B0008B0C6423648BB8400062600C642364615C58B0036159B002602D2C45B0112BB0172344B0177AE5182D2C45B0112BB01723442D2C45B0112BB017458CB0172344B0177AE5182D2CB002254661658A46B040608B482D2CB0022546608A46B040618C482D2C4B53205C58B002855958B00185592D2C20B0032545B019236A4445B01A23444565234520B00325606A20B009234223688A6A606120B0005258B21A401A4523614459B0005058B219401945236144592D2CB9187E3B210B2D2CB92D412D410B2D2CB93B21187E0B2D2CB93B21E7830B2D2CB92D41D2C00B2D2CB9187EC4E00B2D2C4B525845441B2121592D2C0120B003252349B04060B0206320B000525823B002253823B002256538008A63381B212121212159012D2C456920B00943B0022660B00325B005254961B0805358B21940194523616844B21A401A4523606A44B209191A45652345604259B00943608A103A2D2C01B005251023208AF500B0016023EDEC2D2C01B005251023208AF500B0016123EDEC2D2C01B0062510F500EDEC2D2C20B001600110203C003C2D2C20B001610110203C003C2D2C764520B003254523616818236860442D2C7645B00325452361682318456860442D2C7645B0032545616823452361442D2C4569B014B0324B505821B0205961442DB8002B2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8002C2C2020456944B001602DB8002D2CB8002C2A212DB8002E2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8002F2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800302C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800312C2020456944B0016020
20457D691844B001602DB800322CB800312A2DB800332C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800342C4B535845441B2121592DB800352C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800362C2020456944B001602DB800372CB800362A212DB800382C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800392C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8003A2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8003B2C2020456944B001602020457D691844B001602DB8003C2CB8003B2A2DB8003D2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8003E2C4B535845441B2121592DB8003F2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800402C2020456944B001602DB800412CB800402A212DB800422C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800432C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800442C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800452C2020456944B001602020457D691844B001602DB800462CB800452A2DB800472C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800482C4B535845441B2121592DB800492C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8004A2C2020456944B001602DB8004B2CB8004A2A212DB8004C2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8004D2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8004E2C4B20B0032650585158
B080441BB04044591B21212045B0C05058B0C0441B2159592DB8004F2C2020456944B001602020457D691844B001602DB800502CB8004F2A2DB800512C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800522C4B535845441B2121592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B003265358B0401BB000598A8A20B0032653582321B0808A8A1B8A235920B0032653582321B800C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592D00000000020042000004D005BD00030007003FB800532BB800082FB800092FB8000810B80000D0B800002FB8000910B80003DCB80004DCB8000010B80007DC00BA0007000000562BBA0002000500562B3031331121112711211142048EB8FCE205BDFA43B8044DFBB300000001005501DE024B029700030020400A002F03011A0500190405B80142B321BA48182B2B4EE410E6002F4DED3130132115215501F6FE0A0297B90000000100C4000002D5059200080023B10801B80133400C0404070C04079605000A47091076C418C4D5FD39003F3FF4CD313013353E013733112311C4C39A268EC003F68A1359A6FA6E03F60000000100400000041E059D002200A6404E3604460457056B1D6E1E7A1E84018702082A085A196B197C197C1CB519050022010F041C0E1921071C19040100051F0F0F22130A351305201F7521220C217F0738166F220E270F811F38222447231076C418D4EDF4ED10F5EDE4003F3CFD3C3FED1112392F1217390111123912393911391239005D31304379401C04190C2511260B120E2800091407280119040D100A280108150A2801002B2B1010012B2B2B2B81005D36123F01363736353426232207060723363736213212151407060F01060706072115214A85C1C0813452967DB9472604B7034275
0128F6E37946B5896238641A030EFC29B90112706F4B35536B7D938C4B85BB76D0FEF6A3AC7A47654C3631576AAA000000010031FFD9041A059A003100C4401F490C532D6529632D7529752D069626014B082B0A182B140D03F93114350D20B8012340141135107F0D0D311B3524050735310D1896274411B8014A400F0A382E6F021F2920810327023347321076C418D4EDF4ED10F5EDEDF4ED003FED3FED12392FF4FDE610ED10ED111239011112393130437940362F301926000905261D2522260600032800040308300A28011C231F28001A251828010401072800092F0728001E211B280119261B2801002B2B2B2B012B2B2B103C2B2B2B2B818181005D015D0402353316171633323635342623220607351E013332373635342623220706072334373621321615140706071E01151400230116E5BC0C2846B78EACB5A11225131C26166541729865B4452605B2406E0115DBF0472C46717FFEF2F8270117C88B3F719878947601019F03022038906B7478427AA070C8C3B98452331D1FB180CDFEFE000000000200340000042F059C0002000D005C402209020A080D010202BE12060607020601050708030106070A02750B05EF030C070403B80117B501960D08AC0AB80158B3050F470E1076C418D4F5F43CFDE4003F3FF43CFD3C1139390111123911123939872E2B047D10C50F3130011109011121350133113315231102A5FE3501CEFD8C029098D3D301FB0289FD77FE05015EB0038EFC5F9DFEA200000000010042FFDC041C0580002000BB402B4812881F02390C461357136713043A080C0D07000C0A0F0E0E75121313120E0F201213070013170A17350AB80122401A0D7F0E0E1D123A0F04043520C71D0D1107381A6F0038202247211076C418D4EDF5EDC4003FEDED3FFD12392FE4F4ED1112390111123939123939872E2B7D10C5001239011112393931301843794028181F01090226031E00280001001F20051C0728010918072801011F042800061B04280008190A2801002B2B2B012B2B103C103C2B2B8181005D5D131617163332363534262322060727132115210336373633320415140221222427FD127D4054A09AB7805D852F9C6D02E8FD9F3D322D5069C50112FBFEEDAFFEF310016D9A3B1ECC7C96A44840090303AEFE72261321FEC3CBFECAC5CC00000002004DFFDB0423059E001B002700A94039771A0117082508271958198600870188090747080A212721350E0E1403C707351B052735140D032902811E38116F170A023C0A2431172947281076C418D4FD397C4B52787A2F1810F5EDF4ED003FED3FEDED12392FED11123931304379403425261C200F1600060526200F1E280126152428001C131E2801060003280104031F1021280125162728001D1227280004010728012B2B2B2B01103C2B2B2B2B2B818181
81015D005D001615232627262322020336373633320415140223220011103712211236353426232206151416330347BDB21023418497B20A3E5E566AB4010CFEEBC9FEDC417D014C818D7EA674AF9F8D059EF98455305AFEE9FEFC5B2D28E6E4C3FED301310169010BBA0164FADDBF826EC79A9B88B900000002005C00DE046F03360003000700274015012000CD07200604001A0907021908095C213F52182B2B4EF43C10F63C002F4DEDFDFD31300115213501152135046FFBED0413FBED0336A8A8FE53ABAB00000200AF000004F805BD000A001400614035690C6912790C7A12044814581468147A140407081E1110100A010E0F1E0100020A080206120C0409141431041A160F092500191516B8010BB3219589182B2B4EF44DFD3C4E10F64DFD11121739003F3F3CFD3C1012392F3CFD3C015D31305D132132161514062321112300272623211121323635AF0295C4F0D6DEFE32C70380784273FE74018C86A705BDDDC8ACFFFD9304B93A1FFE03729000000100250000077105BD000C0156409508090178077909780B870186040547014B02440348044D08420A8908870AC802C703C707C80B0C580B6707680B890286038607890B9902960395079A0BA902A603A507AA0B0F0808070A080B1908160A5707060B08040A023E284528052506060700250C0C0B090401030B020305060C050002080A0B0307080E17171A0705068640080304F40A0209F4800B0001860C190D8E5E182B194E10F4184DFD39391AFD3939FD39391AFD3939194E456544E618003F173C3F173C12173901874D2EED872EED4B5279B4090A09080AB8019A400F120101020405030406070908090A08B8019A400A12040403010102000C0B877D1008C5872E18052B087D10C5870810C5872E18052B087D10C54B5179B301010002B8019AB6090A0904040503B8019A400F090908040503040607010001020C0B870810C0870810C08710057AFD1808C4188710057AFD7D08C4313001725D5D71005D7213090133090133012309012301FD0115014CD8014C0115DAFE7ED1FEADFEABD1FE8005BDFB5504ABFB5504ABFA4304C2FB3E05BD0002003BFFE103D0044E001A001B00A7402FA719019818A808AA18034A08119B14030314061D1A070D1D140B1B071B1B1710271201032702111A1D0A2717191C1DB80107B321727D182B2B4EF44DED4E10F63C4DED3939ED12392F003F3FED3FED12392F10ED313043794034001908250C150A26000E1310260112110F1007190A26000500032101010204030B160D26000F120D2600091806260104010621012B2B2B2B01103C103C2B2B103C103C2B2B2B81005D015D001617232E012322070615141633323637330E01232202351000330702D6E317AF10727EAC4A308892708319AF1EF0BBD2FA0112D41C044EB0D76383A8
6DA0A1DC8977D5C50133E6011A013A05000200840000013B05BD000300070036401C07E50400010006030A0917171A06010229070300190809AA216242182B2B4EF43C4DC4FD3CC44E456544E6003F3F3C3F4DED3130133311231133152384B7B7B7B7042AFBD605BDCC000000020084000003ED04490019001A005E4031B706C706020406140627147606740705140C021418101D05070006180B0A1A071A1A000C29091A1C012E18291900191B1CB80106B3216242182B2B4EF43C4DFDE44E10F64DED12392F003F3F3C3F3FED1139390112393130005D015D1333153E01333217161511231134272623220706070E011511230184AB4CAA68E4502CB71D307E40294A382D1BB401A7042F985E529F57A2FD5102A3623C640D1642357169FDCF04490000010017FFEF0209055A00180052B50D2E0AC00E01B8013F40250416391703060E0A111A17171A0301062900150E150F031F030203FC1619191AFC21677D182B2B4EF44DFD5D39C42F3CFD3C104E456544E6002F3F3F3C4DFD3CED10FDE431301333113315231114171633323637150E012322263511233533A8B6ABAB2615310D1E141F43277E5A9191055AFED593FD4538130B01028E0908816702C5930000000300F60000037303F900030007000B0053B800532BB8000C2FB8000D2FB8000C10B80000D0B800002FB80001DCB8000010B80004D0B8000110B80005D0B8000D10B80009DCB80008DC00BA0001000200562BBA0005000600562BBA0009000A00562B3031373315231133152305331523F6C6C6C6C601B7C6C6D1D103F9D1C0D100000000010000000000006B8BED625F0F3CF500110800000000005F4D8F0000000000C9C13CF7F865FC270B9108F9000000090001000000000000000100000629FE2900000C01F865FCED0B91000100000000000000000000000000000011051200420239000002AA0055047300C4047300400473003104730034047300420473004D04AC005C055600AF078D00250400003B01C700840473008402390017044500F600000034003400520078010401B001FE02920328035003A6047204F40522057E05CE061000010000001100920009006B0007000200100010005D000007E80A1D00040001B800532BB800492BB8003F2BB800352BB8002B2B4118008001A6009001A600A001A600030069018B0079018B0089018B0099018B00040089018B0099018B00A9018B00B9018BB2040840BA0179001A014A400B041F5414191F180A0B1FD2B80106B49E1FD918E3BB0119000D00E10119B20D0009410A01A0019F0064001F01A50025017A00480028019AB3296C1F60410A01A9007001A9008001A90003008001A9000101A9B21E321FBE012C00250401001F0126001E0401B61FE7312D1FE531B80201B21FC227B80401B21FC11EB80201400F1F
C01D9E1FBF1D671FBE1D671FAB27B80401B21FAA29B80401B61FA91D6C1F931EB8019AB21F921DB80101B21F911DB80101B21F751DB80201B61F6D29961F6431B8019AB21F4C96B802ABB21F391DB80156400B1F3638211F351DE41F2F27B80801400B1F2D1D4C1F2A31CD1F241DB802ABB21F201EB8012540111F1C1D931F3A1D4C1F1E1D45273A1D4527BB01AA019B002A019BB2254A1FBA019B0025017AB349293896B8017BB348283125B8017A403648289629482725294C1F252946272729482756C80784075B07410732072B072807260721071B071408120810080E080C080A08080807B801ACB23F1F06BB01AB003F001F01ABB308060805B801AEB23F1F04BB01AD003F001F01ADB70804080208000814B8FFE0B40000010014B801ABB41000000100B801ABB606100000010006B801ADB300000100B801AD401F04000001000410000001001002000001000200000001000002010802004A00B0018DB806008516763F183F123E113946443E113946443E113946443E113946443E113946443E11394660443E11394660443E11394660442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B18011DB0964B5358B0AA1D59B0324B5358B0FF1D592B2B2B2B2B2B2B2B182B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B74752B2B2B65422B2B4B5279B376706A66456523456023456560234560B08B766818B080622020B16A704565234520B003266062636820B003266165B070236544B06A234420B176664565234520B003266062636820B003266165B066236544B0762344B10066455458B166406544B27640764523614459B36242725D456523456023456560234560B089766818B080622020B172424565234520B003266062636820B003266165B042236544B072234420B1625D4565234520B003266062636820B003266165B05D236544B0622344B1005D455458B15D406544B262406245236144592B2B2B2B456953427374B8019A2045694B20B02853B049515A58B020615944B801A6204569447500
00>] def
/CharStrings 17 dict dup begin
/.notdef 0 def
/space 1 def
/hyphen 2 def
/one 3 def
/two 4 def
/three 5 def
/four 6 def
/five 7 def
/six 8 def
/equal 9 def
/P 10 def
/W 11 def
/c 12 def
/i 13 def
/n 14 def
/t 15 def
/u10FB 16 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def
/FontBBox{-1947 -985 2961 2297}def
/UniqueID 4257378 def
currentdict currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C91B322782D282AC603D1F5A452D1E7AE90B2FF78B151C731C717F5B5A2ECE57D3BD22888D365366CD700C67657245FE4E64FD98C2089406F6AF616EE272D822AE1D0F5FA55576E84178659053C4226366C59D493E2F81CDF74C300283AFB336EEBB5DE3B20458F61539B39E934EE04C0C535C4C5D6F0DEB77562F03940DB0EA560A1C2F860FF0BF25AE734E2F236017518633401D620C432599FA3435D3FC6554535CE01314D2051B86854AE968BB42383B4FBD28D2078A664B0BD968A4CEE6ABAF7875F1BCDDEE43C864C49ED906635AE307B2E9D6FD19622DCB31398A01E2CECC53295E3D9C7316762FD287A52BB1AA75654C14D4452244983D09C496FA069EB102E8941C3F6732F62B949F3F8500AF2ED3C56886F293CAF8FA7CE460E2FF451D55BF5427D8B8FE41A6BA3D58EC686D4D7BC76A88DA22089E4E74799C646F9577AE49FF6C16879B29C281456EBC2D45A2E22E807FE9D833856679AF150B528223278C5474DA4A48FF9253EEAA4FDE653E2B91EE9850F7C2EA8EE252E8E0B5B7AC8EA0C5D61F8C8C39AE5B1D55FC468D965AFF279090325B87BB60A37B9C50EDC1274FAC7706B8E2B582035BC023B4BE8E34BA4966FFF87C39F0365FE97A464CCAAE8CA5B372467DC26A3950319375D5C6F293B6233161C69691C26B4E4141A809381A82B7660FBEBE4FCBA73757530EECF55F53651992F9E898EB0768B8F9DC94F2ADECEC9D4338BE286A980D1C59159AD2D41A9E497778E3C6EE9F7FF4C55BA
BD2F4491BED6DA1FC3A6FE42CAC2E2532996CF7362F4B88447839FD4C4FD27D08D9DF1F64E40797048BECF38C807D3FBD1E1A9A83CB25D5EF487ED1DFE71539C20A2A2C355D73C5C58C1DCD412D1CBB106198CA559B1C035249C031CE37BEBFB43094E01F0509B2D8C8A3C015E49BBCCD7079386FCDEE3C653ABB3A6342E7FBAC84200250B6013832BCB9CEB961E1DA802578D144437DC25B3D80524E682F21B3568D5DAE26CA7AB0D7A2A6C2DFD59D6840592B20F9D71B6E7E14F24E905FCE01ACA68DCD264E95B7413916CFFBD4C0778797BE753B3D7850AB83647E87C6E0C9FD6D5570206289D98BCBAE244AF3D90F276D6258FD6102B8CCAC1E0FB6796E869A856435D97433FC0F86635857EA220AAFDCCDA1D8080880A45E96385A6695441CC98C078DAF01757B0B47BF1C23B6FD0435237A45ACF69C8054175D314CF1F9AC4121CE10A33EBD0F351C2796DB0ADC5CAB654C6F0B1AA683C49E148019C7BB679E2A8F548E6BCEA81FBE50F57A5291C28B592BAD68CB291272149857055B8EB5F17CE6790BDB31FACFACCD51308EE4BCC5CD767EBF3F5F3DB40389DF8C85C185873E9EF757BAC03CD22E0684362DB4FB732F3ED19E58325E9BED660863C7F8C389D36A492E8859F2BC36445E4C5DA7DCA73F964F952D83D76DD4875D757A8315D4BE718E72D279303F4D1C82382A82323734158BF4593680572BD03C3D03EC473598309671FC6EC8C974438111A1B77F53FFE892DDAFFEFBB0475343828279D67B4259249AF7D45A0218677E78804F291361AF689117C63A29667B045D8F53317A4CD8B2CC63EF20B07717D30D10E0112C4883E82B8CE87AF9A8E33B0C0C2CFFE1D9D24237B3782C814FE35256D93FE81AAC6CAD3F4B724C253FCF433BAEFFDF028AFE9F54CE9268FEC523B9ED940D7D85C7A63C0F5C49F98F357BDDE2384FD05E7DD8C3FC2C81C2B9FE93380163ADA359D124A40AAF7E2DA1E6EDE830C346ECBC689ADA92601E1A433DA968A7894E70495AF3190E6C1743843D403E2B8D5F50D8780C99B8DB9035347ACBE8EE4640F14444DC77F83A930741639777FB17E63B2D410A6D8D8934DD773571E96C1318FC5F90BEE744B59715B293A55F20C90DC37411FB5C3135015BC9784DBFD2E2D0BA07EC6F598570E90EE470EB870D0ECD86FBE8974B7CBD614F8A9AB7F1AB576399FBA10DAD17BFE8F029E5A0D229BC5A8902B18363165FBF60F5D70545DD5346EA805229BD00ADA632336A6A6A0A72DA8515F9AAA25B7A7A5FE1A5D0F890F5474557068EDD59FE109CA4343338C3A8A3A2C764D38E99D84AABBAEBCABD1926F562A1E8CBF6D4594C4C94751F42CF02BB257A53EF69E814F062583787CBDD15142CD428B92E45CA05EE0B38730DDE906552497D2B74970931C0DE29AA9162B3622B6486C08DB5D36587CFC763E49459A
2101F665E64421576A3954412A6FD8CDBD40D9BCAFE48CF5BA60067F45F068A7369358C4FC3D36CC0FD6846C2F735C6BAA005778686215DD6F38D465A93D3F7D50304AA9DFABC31FCCD36327369FBEF0182841A9CAC33607A17A05A0732F4A69B537F29A7A0E56A86B3778CDD6067BA6947E874C74B0C89401D05D992C509020330429C5D5BBB49037958526EC0577D026BD2267AE1F76AD255442542DC39ED3529F2F7398FCE09C14F12CF03931687B94A0439DDFB92419981776F9DC33ADA70ABF049AFDAA82812A23438F58907651B852FD53AAC4D83A96430BCF80934E833D735C388AD0029D4D244E1C0B233031085F459AB4B695AB82B81AE2E05BDEB189306EA60FB7F4A7C199C6671CDF483A87BC096A1D266794063EBECE57EC9C247DD11429C03DAB5BE8F87081C53FAAEDE921851F5AEE1164B851906B16D3BCCA6C6DC47F586E97E083703F6DD0DFD22B8FED3A4C274156C5DEDEC456E1B5A583307A09E0E12F98D14AE41FF678058303A9B919F70281CC4B98B033A87BB09E5B84E209CB42CAE10735838F2DDBEF62891A68B7EE17C9A443008E33105A0ED6DADE9C9FC297CB6BE4E6A9DDE5E0EC77BBE38C5CA8B3B13B938EAB8B815E115B6E0C6F87C0FBA645D072030A05EC1E21ADBB1CA4A7DF9D14CBDC3594459F50069768F9CAE69269DBC7
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark end
%APLT1End
%RBIEndFontSubset
/Helvetica cguidfix
/F1.1/Helvetica renmfont
%RBIBeginFontSubset: Helvetica-Oblique
%!FontType1-1.0: Helvetica-Oblique 1.0000.0.0000
14 dict begin/FontName /Helvetica-Oblique def
/PaintType 0 def
/Encoding 256 array 0 1 255{1 index exch/.notdef put}for
dup 33 /w put
dup 34 /o put
dup 35 /r put
dup 36 /k put
dup 37 /l put
dup 38 /a put
dup 39 /d put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[2048 -1910 1 index div -985 2 index div 3218 3 index div 2331 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C0000036C6670676D000000000000040800000A1D676C79660000000000000E280000041468656164000000000000123C0000003668686561000000000000127400000024686D74780000000000001298000000246C6F636100000000000012BC000000146D61787000000000000012D0000000207072657000000000000012F0000003CF05C0001005BD00280580001A042F001F0000FFD90000FFDA0000FFD9FE55FFE605C70010FE6DFFF1033B000000B9000000B902FE3F3C00C0008D009B00AF000600A800C00028005E009800C9016A00B9015C00B400D6011E002E0080000400B8004C00CC01FFFFD1006600A400AF007400C2009500B1000C0028006D0015004C008E0125FF7A000C0040004C00620084FFA200240038008600BD0039005E008E00EDFFA9FFB300400052005500AA00AB00C200CB012302B10413FFAEFFE4000800510074008400AA00D1FF4CFFAF0012002C004200500051008400BE012503DAFF680018003B0098009C009F00A100C100EC018201B4FF68FF76FFD0FFE100020018001C00530053007D01B401E103AF0486FF9CFFEAFFFE001F0028002A00520060009300A300AA00AF00AF00C001000145016B0174019301950240028202B404850517FEFD00060029004700470048006F008800B400B900C400F200F901EF02180310037403C5FF35FFF3000B004B004C0052005500650076007600870087008E00AB00BB0106013001430150017D0194019501D3022A025502580277027802E6034E035C037903D3047304B2058C0598060BFEF5FFBBFFC7FFD50017001D005B0072007E009C00C200D000F400FA01030106011C0125013B0142015E015E0180019B02B901A101B9025001C001D002AA01DF01E301EF01FB0205020C0215022B0274029302AB02C202CE03690395039903DF03F5043E050205A105E5062507DBFE62FE89FECEFF3BFFE1FFF800030008002100390042004E005F0061006F00700034007F008E00AD00AD00AF00BD00C400C500C900C900C900E3011C00ED00F800F901000112011A0132014D014D014E014F01660169019E01BA01BA01BE01E301EF01F602000200020902110217021C02530262026D028002D50280031B032A034A035A03AF03AF03C803D603FB03FB04050413041504470449008C046D049A049A04A604A804B204CF0539053E054E055605800589058C036305D105D6067E068E06B206EF06F00728074C076F078C00B400C900C000C10000000000000000000000000004012400AF0032006E0063014401620096014301A10161008A00740064018801EF01700028FF5D037E0347023000AA00BE007B0062009A007D0089035C00A1FFD803AA00D70093006C0000008000A70442001D0597001D00820030002A
002A002A002A002A40292A292827262524232221201F1E1D1C1B1A191817161514131211100D0C0B0A090807060504030201002C4523466020B02660B004262348482D2C452346236120B02661B004262348482D2C45234660B0206120B04660B004262348482D2C4523462361B0206020B02661B02061B004262348482D2C45234660B0406120B06660B004262348482D2C4523462361B0406020B02661B04061B004262348482D2C0110203C003C2D2C20452320B0CD442320B8015A51582320B08D44235920B0ED51582320B04D44235920B09051582320B00D44235921212D2C20204518684420B001602045B04676688A4560442D2C01B9400000000A2D2C00B9000040000B2D2C2045B00043617D6818B0004360442D2C45B01A234445B01923442D2C2045B00325456164B050515845441B2121592D2C20B0032552582359212D2C69B04061B0008B0C6423648BB8400062600C642364615C58B0036159B002602D2C45B0112BB0172344B0177AE5182D2C45B0112BB01723442D2C45B0112BB017458CB0172344B0177AE5182D2CB002254661658A46B040608B482D2CB0022546608A46B040618C482D2C4B53205C58B002855958B00185592D2C20B0032545B019236A4445B01A23444565234520B00325606A20B009234223688A6A606120B0005258B21A401A4523614459B0005058B219401945236144592D2CB9187E3B210B2D2CB92D412D410B2D2CB93B21187E0B2D2CB93B21E7830B2D2CB92D41D2C00B2D2CB9187EC4E00B2D2C4B525845441B2121592D2C0120B003252349B04060B0206320B000525823B002253823B002256538008A63381B212121212159012D2C456920B00943B0022660B00325B005254961B0805358B21940194523616844B21A401A4523606A44B209191A45652345604259B00943608A103A2D2C01B005251023208AF500B0016023EDEC2D2C01B005251023208AF500B0016123EDEC2D2C01B0062510F500EDEC2D2C20B001600110203C003C2D2C20B001610110203C003C2D2C764520B003254523616818236860442D2C7645B00325452361682318456860442D2C7645B0032545616823452361442D2C4569B014B0324B505821B0205961442DB8002B2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8002C2C2020456944B001602DB8002D2CB8002C2A212DB8002E2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8002F2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800302C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800312C2020456944B0016020
20457D691844B001602DB800322CB800312A2DB800332C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800342C4B535845441B2121592DB800352C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800362C2020456944B001602DB800372CB800362A212DB800382C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800392C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8003A2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8003B2C2020456944B001602020457D691844B001602DB8003C2CB8003B2A2DB8003D2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8003E2C4B535845441B2121592DB8003F2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800402C2020456944B001602DB800412CB800402A212DB800422C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800432C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800442C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800452C2020456944B001602020457D691844B001602DB800462CB800452A2DB800472C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800482C4B535845441B2121592DB800492C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8004A2C2020456944B001602DB8004B2CB8004A2A212DB8004C2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8004D2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8004E2C4B20B0032650585158
B080441BB04044591B21212045B0C05058B0C0441B2159592DB8004F2C2020456944B001602020457D691844B001602DB800502CB8004F2A2DB800512C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800522C4B535845441B2121592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B003265358B0401BB000598A8A20B0032653582321B0808A8A1B8A235920B0032653582321B800C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592D00000000020042000004D005BD00030007003FB800532BB800082FB800092FB8000810B80000D0B800002FB8000910B80003DCB80004DCB8000010B80007DC00BA0007000000562BBA0002000500562B3031331121112711211142048EB8FCE205BDFA43B8044DFBB3000000020070FFDC049A0449000F003B003BB800532B00BA0027003500562BBA001F001700562BB8002710B80000D0B800002FB8002710B8002AD0B8002A2FB8003510B8002ED0B8002E2F3031253237363F010E010F01060706070616013637363736262322070607233624333217160703061633323637070E0123222726370E01232226373E013701E65F63A5241E256E337065375D16115F01B3401F110914727A8D4B2A1BA82F0118A3BD66662083060F250C1F121D2C2D265D1C0F0547E47C95971D20DD9B752C49A691151C060E0D1C2F674E5A0214082C182D5C534C2A53C69B484898FD971C220303850C06422340486AB58895A4130002006FFFDA052605C2000B001D001BB800532B00B8000F2FBA0000001600562BBA001C000600562B303125323637362623220607061601161713330123370E01232202373600333202427DCE2B2B7C7A88D52B2561020E2A2D73ADFEC7A21F54BF6FB3C636310138DE7B77D7C9CBC3D0CAACE803971E4B
021DFA3E956358012DFAEA015700000000010080000004C405BD000B0031B800532B00B800002FB800062FB8000A2FBA000200060000111239BA000400060000111239BA000800060000111239303101330301330901230307032301B8ADB6022FE6FE110123E6DCB455AD05BDFCAB01C7FE6FFD62021C8AFE6E0000000100890000027505BD0003000FB800532B00B800002FB800022F30310133012301C1B4FEC8B405BDFA430000020072FFD904D0044E000C00180017B800532B00BA000A001000562BBA0016000400562B30310136272623220607061633321237020021220237120033321203DA201C2DBAA5CB262465A3B3BFE037FEBCFEF7DDC4353A0156E7CFE30229965E94FCB2ABE4010FABFEFDFEAE012BFC010E0140FEEC0000000100890000037904470011001FB800532B00B800102FBA0005000C00562BB8000510B80008D0B800082F30310133073E0133321617072E01232206070323016CAB2720C56B05181C28101A1088B71982B4042FB9369B0203BE0302AF72FD98000100F500000684042F000C0039B800532B00B800002FB800022FB800052FB800072FB8000A2FBA000100070000111239BA000400070000111239BA00090007000011123930310113013313013301230301230301BA1B0184CA20018DB4FDE6BB2AFE7DBB52042FFCB4034CFCB90347FBD1033DFCC3042F000300F6000003F503F900030007000B000FB800532B00B800042FB800022F30312533072313330723053307230122C52BC6D8C52CC6018EC62DC5D1D103F9D1C0D1000000010000000000008A4FDF4F5F0F3CF500110800000000005F4D8F0000000000C9C13CF7F88AFC270C92091B000200090001000000000000000100000629FE2900000C01F88AFC350C92080001B3000000000000000000000000000905120042047300700473006F0400008001C700890473007202AA008905C700F5044500F60000003400B000F4012A0140017C01AC01E8020A0001000000090096000900000000000200100010005D000007E80A1D00000000B800532BB800492BB8003F2BB800352BB8002B2B4118008001A6009001A600A001A600030069018B0079018B0089018B0099018B00040089018B0099018B00A9018B00B9018BB2040840BA0179001A014A400B041F5414191F180A0B1FD2B80106B49E1FD918E3BB0119000D00E10119B20D0009410A01A0019F0064001F01A50025017A00480028019AB3296C1F60410A01A9007001A9008001A90003008001A9000101A9B21E321FBE012C00250401001F0126001E0401B61FE7312D1FE531B80201B21FC227B80401B21FC11EB80201400F1FC01D9E1FBF1D671FBE1D671FAB27B80401B21FAA29B80401B61FA91D6C1F931EB8019AB21F921DB80101B21F911DB80101B21F751DB80201B61F6D29
961F6431B8019AB21F4C96B802ABB21F391DB80156400B1F3638211F351DE41F2F27B80801400B1F2D1D4C1F2A31CD1F241DB802ABB21F201EB8012540111F1C1D931F3A1D4C1F1E1D45273A1D4527BB01AA019B002A019BB2254A1FBA019B0025017AB349293896B8017BB348283125B8017A403648289629482725294C1F252946272729482756C80784075B07410732072B072807260721071B071408120810080E080C080A08080807B801ACB23F1F06BB01AB003F001F01ABB308060805B801AEB23F1F04BB01AD003F001F01ADB70804080208000814B8FFE0B40000010014B801ABB41000000100B801ABB606100000010006B801ADB300000100B801AD401F04000001000410000001001002000001000200000001000002010802004A00B0018DB806008516763F183F123E113946443E113946443E113946443E113946443E113946443E11394660443E11394660443E11394660442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B18011DB0964B5358B0AA1D59B0324B5358B0FF1D592B2B2B2B2B2B2B2B182B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B74752B2B2B65422B2B4B5279B376706A66456523456023456560234560B08B766818B080622020B16A704565234520B003266062636820B003266165B070236544B06A234420B176664565234520B003266062636820B003266165B066236544B0762344B10066455458B166406544B27640764523614459B36242725D456523456023456560234560B089766818B080622020B172424565234520B003266062636820B003266165B042236544B072234420B1625D4565234520B003266062636820B003266165B05D236544B0622344B1005D455458B15D406544B262406245236144592B2B2B2B456953427374B8019A2045694B20B02853B049515A58B020615944B801A6204569447500
00>] def
/CharStrings 9 dict dup begin
/.notdef 0 def
/a 1 def
/d 2 def
/k 3 def
/l 4 def
/o 5 def
/r 6 def
/w 7 def
/u10FB 8 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def
/FontBBox{-1910 -985 3218 2331}def
/UniqueID 4515919 def
currentdict currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C99D7B912F94734180BCB0A2B426ACDB993C61FD2485EFF51D552B79ED2E120C8C3A17A67DCF03E7412FCDB8DA0EBD8CAD34A1FBFAF2D47EFCA53DD53E2967F67FCD4065236863224C550BE9D0C09E6D9B421FD7EF2EA8B00864758361D8A28A2DA731845171FB15FEB8C996F44696847D1A9DB25524DE44626F18DDC988F3D19646EEDA5A3D014CB2C5CF7263EEDA259EB06355B2D4826F349282ACD1837C0C313471D905DDB9E11B378B6DFCDBD408AE1B4816960BE0366913DAC831A58BEB71478333853117C427E61127128B3514E2FB6026CEA7C3315CD50E7D0C66EA21D7CB961D61BE3C47BA726EC5AF6506C85003E41B45ECDFAD12D835900A3C6C6F1A2752DE21A2F56F6E63A1415DC386B0173F1BEA1F55117A7BC4BE798D80001046EFEF470A34DA248087D913EF13B7B60DB6D7ACF15946AE67047B608C392B0D78F8BE76A5F4D5C409B6DF16055A57652B0BE9D21E87C83A24F8D4214A37F8B9637D126FC300E988D381778B46A917383B9459C83E8691DED7A8F4139C7E339FA597ACBF02250FF418C7A5464E5F26DAE5F1654CFAD17A2CD17F5152A6D613849153277042E5C697034E9A0AA511D878D74D6EED3D66A507AB7A0D28039EA0E4856A00E3E1073E41B78AA5CF16B43E1FB23B7C0C0D986AB629BD22CB5A3B4358EABA6EBB9FFB7BC9537A938ED712F482DDFD3CA41B9973E94B2ECF30C0AAB2FEC158C917D48D72E494821D331E249C5D9E53AA5B1CCD69FF96F0D14AE1BD7D53C15
C42391A6797973B118228CF270C2BD8B4C1621DCFF2E704F40B9B39AC5A72D53DDF96C8554220D6BFDDD7634F858CC2316C194FF4D97E805074B996C5491D8B0DCA31CEAC30355D99F1FBB5B0FD129D747F6F29D8286373AA665BDB74D6AA62F37475078D989209CE670E57F0908D2F0908660A507163D0A068F637162FC586318F4E3C983A77507A4094D63BF1815B6D7C8AE7B7AF1ABBBA2D84B96E24B92B3302ED1731FAAAB033030D3B288C9E86D4B16D1AC4D676999A2ED7EC644319B6A503C0109765AA6DE53E01ECB5922788449098906518E8431FEDBA8AB5DA07B053781D601A485B492F5417744D573EDD079340364BFC2AE41A1A0F00ABEB9AA8E6D6A024628D0A313E36D1A4E5EC315CF028CBFBE1E78CA0A63C6E5215B259FE64FFB88E2698E08E98EF74DECAEA52AA66D994CD70A2969AE37B318F0CE1053017A6D4FA9B18AD26786822617B6F44B55B7A9481DA314E8FCF8BF7FB8A834CA07E88E975EE1165115F1D5EADF5057608107B1E71544A92C11FA13CD165566C102EDDD9D954AF5643AFFC1A5BFF53D73F7894339388EF3D4578C5707861F37EBB6FCEBC579F3026D8AEDCE5D056DBD5E5F11893B227B7B8A5C7F8B6C8A5FC921A9CA13B5AE7DD0594109F47AC3B4D5092351001E298F1C9ED368BD7A3CAA40497828198AA8A5DDBCFE7DA6B24C063BC6E3FC45FAD0C18B033E785E94525379674D6934C8553001EB65DEC51618FFD8110B68A59EEDB87481AE1AF5AE96AA27347BEC01E3E00311CA1D90540F140EC5DCCF90AA5309AAE13B35FD37B0747E1C64D0E2CF794055F47974EB9DDE39D0AB58BBD9174DC30F7789D97C548E99BE2CBDDFD24E63C6C370DCF21516502B4AE8670B530B26146A689DE9E61B7A64F47A7711A05EDE16634CAAC5652479948A17C4B3AA3D3F378354100D
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark end
%APLT1End
%RBIEndFontSubset
/Helvetica-Oblique cguidfix
/F2.1/Helvetica-Oblique renmfont
[ /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
[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def
/DecodeA { { 1.8008 exp } bind exec} bind
def
/MatrixA [ 0.9642 1.0000 0.8249 ] def
/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def
/DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def
end ] /Cs2 exch/ColorSpace dr pop
%%EndPageSetup
0.60000002 i
/Cs1 SC
1 1 1 sc
q
0 0 241 97 rc
-69.5 144.5 m
506.5 144.5 l
506.5 -588.5 l
-69.5 -588.5 l
h
-69.5 144.5 m
f
5 59 m
32 59 l
32 41 l
5 41 l
h
5 59 m
f
1 J
1 j
0 0 0 sc
1 0 0 -1 -69 144 cm
74 85 m
101 85 l
101 103 l
74 103 l
h
74 85 m
S
/Cs2 SC
0 sc
0 i
1 0 0 -1 18.5 50 cm
/F1.1[ 10 0 0 -10 0 0]sf
-2.7807617 4 m
(!)s
0.60000002 i
/Cs1 SC
1 1 1 sc
CM
32 59 m
71.921875 59 l
71.921875 41 l
32 41 l
h
32 59 m
f
0 0 0 sc
1 0 0 -1 -69 144 cm
101 85 m
140.92188 85 l
140.92188 103 l
101 103 l
h
101 85 m
S
/Cs2 SC
0 sc
0 i
1 0 0 -1 51.960938 50 cm
-2.7807617 4 m
(")s
0.60000002 i
/Cs1 SC
0.40000001 0.40000001 0.40000001 sc
CM
71.921875 59 m
94.890625 59 l
94.890625 41 l
71.921875 41 l
h
71.921875 59 m
f
0 0 0 sc
1 0 0 -1 -69 144 cm
140.92188 85 m
163.89062 85 l
163.89062 103 l
140.92188 103 l
h
140.92188 85 m
S
/Cs2 SC
0 sc
0 i
1 0 0 -1 83.40625 50 cm
-2.7807617 4 m
(#)s
0.60000002 i
/Cs1 SC
0.80000001 0.80000001 0.80000001 sc
CM
94.890625 59 m
149.10938 59 l
149.10938 41 l
94.890625 41 l
h
94.890625 59 m
f
0 0 0 sc
1 0 0 -1 -69 144 cm
163.89062 85 m
218.10938 85 l
218.10938 103 l
163.89062 103 l
h
163.89062 85 m
S
/Cs2 SC
0 sc
0 i
1 0 0 -1 122 50 cm
-2.7807617 4 m
($)s
0.60000002 i
/Cs1 SC
0.80000001 0.80000001 0.80000001 sc
CM
149.10938 59 m
189.03125 59 l
189.03125 41 l
149.10938 41 l
h
149.10938 59 m
f
0 0 0 sc
1 0 0 -1 -69 144 cm
218.10938 85 m
258.03125 85 l
258.03125 103 l
218.10938 103 l
h
218.10938 85 m
S
/Cs2 SC
0 sc
0 i
1 0 0 -1 169.07031 50 cm
-2.7807617 4 m
(%)s
0.60000002 i
/Cs1 SC
1 1 1 sc
CM
189.03125 59 m
238.21484 59 l
238.21484 41 l
189.03125 41 l
h
189.03125 59 m
f
0 0 0 sc
1 0 0 -1 -69 144 cm
258.03125 85 m
307.21484 85 l
307.21484 103 l
258.03125 103 l
h
258.03125 85 m
S
/Cs2 SC
0 sc
0 i
1 0 0 -1 213.62305 50 cm
-2.7807617 4 m
(&)s
0.5 w
0.60000002 i
/Cs1 SC
0 0 0 sc
1 0 0 -1 -69 144 cm
163.89062 74.822868 m
163.89062 79.999962 l
S
258.03125 74.822868 m
258.03125 79.999962 l
S
163.89062 74.822868 m
258.03125 74.822868 l
S
/Cs2 SC
0 sc
0 i
1 0 0 -1 163.77597 85.578369 cm
/F1.1[ 12 0 0 -12 0 0]sf
-1.6669922 4 m
(')s
1 0 0 -1 168.53116 80.745041 cm
/F1.1[ 8 0 0 -8 0 0]sf
-2.2246094 3 m
(!)s
1 0 0 -1 186.90366 32.083328 cm
/F1.1[ 12 0 0 -12 0 0]sf
-1.6669922 4 m
(')s
1 0 0 -1 191.65884 27.25 cm
/F1.1[ 8 0 0 -8 0 0]sf
-2.2246094 3 m
(")s
1 0 0 -1 125.08862 84.245056 cm
/F1.1[ 10 0 0 -10 0 0]sf
-9.0283203 4 m
(\(\)*)[ 9.438477 2.778320 0.000000 ] xS
/F1.1[ 12 0 0 -12 0 0]sf
9.0283203 4 m
(\))s
1 0 0 -1 142.9064 85.3284 cm
-1.6669922 4 m
(')s
1 0 0 -1 147.66159 80.495071 cm
/F1.1[ 8 0 0 -8 0 0]sf
-2.2246094 3 m
(")s
1 0 0 -1 155.13544 83.911728 cm
/F1.1[ 12 0 0 -12 0 0]sf
-1.9980469 4 m
(+)s
1 0 0 -1 92.763031 33.499992 cm
-1.6669922 4 m
(')s
1 0 0 -1 97.518219 28.666664 cm
/F1.1[ 8 0 0 -8 0 0]sf
-2.2246094 3 m
(!)s
0.60000002 i
/Cs1 SC
0 0 0 sc
1 0 0 -1 -69 144 cm
213.36594 69.58036 m
213.36594 74.757454 l
S
74 124.92714 m
74 119.75003 l
S
305.92093 124.92714 m
305.92093 119.75003 l
S
74 124.92714 m
305.92093 124.92714 l
S
190.49997 130.17851 m
190.49997 125.00142 l
S
/Cs2 SC
0 sc
0 i
1 0 0 -1 106.70584 9.1430206 cm
/F1.1[ 12 0 0 -12 0 0]sf
-1.6669922 4 m
(')s
1 0 0 -1 125.08862 5.7166443 cm
/F2.1[ 8 0 0 -8 0 0]sf
-16.007812 3 m
(!"#$%"&')[ 5.777344 4.449219 2.664062 4.000000 1.777344 4.449219 4.449219 0.000000 ] xS
1 0 0 -1 8.8333588 83.368431 cm
/F1.1[ 10 0 0 -10 0 0]sf
-3.3349609 4 m
(,)s
1 0 0 -1 16.833321 78.680916 cm
-6.3916016 4 m
(-./)[ 2.221680 5.561523 0.000000 ] xS
1 0 0 -1 28.666679 83.19136 cm
-2.9199219 4 m
(*)s
1 0 0 -1 54.960907 90.301331 cm
-4.7192383 4 m
(\()s
1 0 0 -1 37.999985 75.281929 cm
/F1.1[ 12 0 0 -12 0 0]sf
-1.6669922 4 m
(')s
1 0 0 -1 56.382767 71.85553 cm
/F2.1[ 8 0 0 -8 0 0]sf
-16.007812 3 m
(!"#$%"&')[ 5.777344 4.449219 2.664062 4.000000 1.777344 4.449219 4.449219 0.000000 ] xS
0.60000002 i
/Cs1 SC
0 0 0 sc
1 0 0 -1 -69 144 cm
143.76315 61.993774 m
104.00002 62.092735 l
S
ep
end
%%Trailer
%%EOF
%%EndDocument
@endspecial 27000 8831 a(Figure)326 b(2:)31516 8831
y
SDict begin H.S end
31516 8831 a 31516 8831 a
SDict begin H.R end
31516 8831 a 31516 8831 a
SDict begin [/View [/XYZ H.V]/Dest (figure.2) cvn /DEST pdfmark end
31516 8831 a Fx(The)g(Pr)-20 b(obability)327 b(of)e(Inconsistency)i(\()
p FL(P)48217 8997 y FD(inc)49273 8831 y Fx(\).)974 b
Fw(An)27000 10026 y(e)-20 b(xample)485 b(of)f(a)f(window)g(of)h(vulner)
-15 b(ability)484 b(is)f(shown.)1012 b(Bloc)-20 b(ks)484
b(1)27000 11222 y(thr)-45 b(ough)216 b(6)h(wer)-37 b(e)216
b(meant)h(to)f(be)g(written)g(in)g(strict)f(or)-37 b(der)216
b(to)g(disk.)298 b(How-)27000 12417 y(e)-15 b(ver)-111
b(,)253 b(bloc)-20 b(k)253 b(5)e(\(dark)h(gr)-15 b(ay\))251
b(is)g(written)g(early)-55 b(.)316 b(Once)253 b(5)f(is)f(committed,)
27000 13613 y(a)201 b(window)f(of)h(vulner)-15 b(ability)202
b(e)-20 b(xists)201 b(until)g(bloc)-20 b(ks)202 b(3)f(and)g(4)g
(\(light)g(gr)-15 b(ay\))27000 14808 y(ar)-37 b(e)236
b(committed;)241 b(a)236 b(cr)-15 b(ash)235 b(during)h(this)f(time)h
(will)f(lead)h(to)f(observable)27000 16004 y(r)-37 b(eor)g(dering)-15
b(.)624 b(The)354 b(pr)-45 b(obability)354 b(of)g(inconsistency)h(is)e
(calculated)j(by)27000 17199 y(dividing)283 b(the)h(time)f(spent)g(in)f
(suc)-15 b(h)283 b(a)g(window)f(\(i.e)-15 b(.,)242 b(W)362
b Ft(=)215 b Fw(t)48232 17375 y Fr(2)48825 17199 y Fq(\000)126
b Fw(t)50003 17375 y Fr(1)50445 17199 y Fw(\))283 b(by)27000
18395 y(the)249 b(total)h(runtime)f(of)g(the)h(workload)f(\(i.e)-15
b(.,)224 b(t)42679 18586 y Fo(wor)18 b(k)13 b(l)40 b(oad)45773
18395 y Fw(\).)27000 20225 y FM(ten)247 b(occurs)h(long)g(after)f(the)h
(transaction)g(has)f(been)i(committed,)27000 21553 y(and)278
b(thus)f(ordering)h(is)e(preserv)-17 b(ed)279 b(without)f(a)f(\003ush.)
28107 22900 y(W)-89 b(e)386 b(refer)f(to)g(this)g(arrangement)j(as)d
FL(pr)-50 b(obabilistic)386 b(consis-)27000 24228 y(tency)p
FM(.)480 b(In)322 b(such)h(a)f(con\002guration,)336 b(typical)323
b(operation)h(may)f(or)27000 25557 y(may)362 b(not)g(result)f(in)g
(much)i(reordering,)383 b(and)362 b(thus)g(the)f(disk)h(is)27000
26885 y(only)252 b(sometimes)f(in)g(an)g(inconsistent)h(state.)334
b(A)251 b(crash)g(may)h(not)27000 28213 y(lead)408 b(to)e(inconsistenc)
-17 b(y)409 b(despite)f(a)f(lack)g(of)g(enforcement)i(by)27000
29542 y(the)224 b(\002le)f(system)g(via)h(\003ush)f(commands.)328
b(Despite)223 b(probabilistic)27000 30870 y(crash)314
b(consistenc)-17 b(y)317 b(of)-28 b(fering)314 b FL(no)h
FM(guarantees)h(on)f(consistenc)-17 b(y)27000 32199 y(after)383
b(a)g(crash,)410 b(man)-17 b(y)384 b(practitioners)g(are)f(dra)-17
b(wn)384 b(to)f(it)g(due)h(to)27000 33527 y(lar)-20 b(ge)278
b(performance)h(g)-6 b(ains)278 b(from)e(turning)i(of)-28
b(f)277 b(\003ushing.)27000 33767 y
SDict begin H.S end
27000 33767 a 27000
33767 a
SDict begin 12 H.A end
27000 33767 a 27000 33767 a
SDict begin [/View [/XYZ H.V]/Dest (subsection.3.1) cvn /DEST pdfmark
end
27000 33767 a 1828
x FF(3.1)1329 b(Quantifying)333 b(Pr)-24 b(obabilistic)332
b(Consistency)27000 37426 y FM(Unfortunately)-72 b(,)420
b(probabilistic)390 b(consistenc)-17 b(y)393 b(is)c(not)h(well)g(un-)
27000 38755 y(derstood.)637 b(T)-89 b(o)376 b(shed)f(light)f(on)i(this)
d(issue,)399 b(we)375 b(quantify)g(ho)-28 b(w)27000 40083
y(often)429 b(inconsistenc)-17 b(y)431 b(arises)d(without)i(\003ushing)
g(via)f(simula-)27000 41411 y(tion.)752 b(T)-89 b(o)415
b(do)f(so,)447 b(we)413 b(disable)h(\003ushing)h(in)e(Linux)i(e)-17
b(xt4)415 b(and)27000 42740 y(e)-17 b(xtract)282 b(block-le)-28
b(v)-17 b(el)283 b(traces)e(underneath)j(e)-17 b(xt4)282
b(across)f(a)f(range)27000 44068 y(of)357 b(w)-11 b(orkloads.)586
b(W)-89 b(e)357 b(analyze)j(the)e(traces)f(carefully)h(to)g(deter)-22
b(-)27000 45396 y(mine)407 b(the)h(chances)g(of)f(an)g(inconsistenc)-17
b(y)410 b(occurring)e(due)g(to)27000 46725 y(a)356 b(crash.)579
b(Our)356 b(analysis)g(is)f(done)i(via)f(a)g(simulator)f(b)-22
b(uilt)356 b(atop)27000 48053 y(DiskSim)406 b([)31650
48053 y
SDict begin H.S end
31650 48053 a FM(4)32203 47298 y
SDict begin H.R end
32203 47298
a 32203 48053 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.BucyEtAl08--DiskSim) cvn H.B /ANN pdfmark end
32203 48053 a FM(],)438 b(which)407 b(enables)g(us)f
(to)g(model)h(comple)-17 b(x)409 b(disk)27000 49381 y(beha)-22
b(viors)278 b(\()p FL(e)-17 b(.g)g(.)p FM(,)278 b(scheduling,)h
(caching\).)28107 50728 y(The)j(main)g(output)g(of)f(our)g(simulations)
g(is)g(a)g(determination)27000 52056 y(of)420 b(when)i(a)e
FL(window)i(of)e(vulner)-17 b(ability)422 b FM(\()-55
b FL(W)135 b FM(\))420 b(arises,)455 b(and)421 b(for)27000
53385 y(ho)-28 b(w)283 b(long)g(such)f(windo)-28 b(ws)283
b(last.)356 b(Such)284 b(a)e(windo)-28 b(w)283 b(occurs)g(due)27000
54713 y(to)438 b(reordering.)829 b(F)-17 b(or)439 b(e)-17
b(xample,)481 b(if)438 b FL(A)g FM(should)i(be)f(written)f(to)27000
56041 y(disk)285 b(before)i FL(B)p FM(,)g(b)-22 b(ut)286
b FL(B)f FM(is)g(written)g(at)g(time)257 b FL(t)44184
56208 y Fz(1)44935 56041 y FM(and)286 b FL(A)g FM(written)f(at)26972
57370 y FL(t)27280 57537 y Fz(2)27745 57370 y FM(,)341
b(the)328 b(state)g(of)g(the)h(system)f(is)g(vulnerable)i(to)e
(inconsistenc)-17 b(y)27000 58698 y(in)384 b(the)g(time)f(period)i
(between,)357 b FL(W)441 b Fn(=)276 b FL(t)42672 58865
y Fz(2)43330 58698 y FC(\000)165 b FL(t)44664 58865 y
Fz(1)45129 58698 y FM(.)662 b(If)383 b(the)h(system)27000
60027 y(crashes)378 b(during)h(this)e(windo)-28 b(w)-72
b(,)405 b(the)378 b(\002le)g(system)g(will)f(be)h(left)27000
61355 y(in)293 b(an)g(inconsistent)h(state;)300 b(con)-44
b(v)-17 b(ersely)-72 b(,)298 b(once)d(the)e(latter)f(block)27000
62683 y(\()p FL(A)p FM(\))276 b(is)g(written,)h(there)g(is)f(no)i
(longer)g(an)-17 b(y)279 b(concern.)28107 64030 y(Gi)-28
b(v)-17 b(en)278 b(a)f(w)-11 b(orkload)279 b(and)e(a)g(disk)g(model,)g
(it)f(is)g(thus)g(possible)27000 65358 y(to)342 b(quantify)h(the)f
FL(pr)-50 b(obability)343 b(of)f(inconsistency)i(\(P)47556
65524 y FD(inc)48612 65358 y FL(\))d FM(by)h(di-)27000
66687 y(viding)227 b(the)f(total)f(time)g(spent)h(in)g(windo)-28
b(ws)227 b(of)e(vulnerability)i(by)27000 68015 y(the)220
b(total)f(run)h(time)g(of)f(the)h(w)-11 b(orkload)221
b(\()p FL(P)42651 68181 y FD(inc)44119 68015 y Fn(=)192
b FC([)164 b FL(W)46941 68181 y FD(i)47223 68015 y FG(=)-28
b FL(t)48056 68198 y FD(wor)19 b(k)14 b(l)42 b(oad)51324
68015 y FM(\);)27000 69343 y(Figure)30197 69343 y
SDict begin H.S end
30197
69343 a FM(2)30750 68588 y
SDict begin H.R end
30750 68588 a 30750 69343
a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (figure.2) cvn H.B /ANN pdfmark end
30750 69343 a 308 w FM(sho)-28 b(ws)307 b(an)h(e)-17
b(xample.)437 b(Note)308 b(that)f(when)i(a)e(w)-11 b(orkload)27000
70672 y(is)327 b(run)h(on)g(a)g(\002le)h(system)e(with)h
(cache-\003ushing)j(enabled,)343 b FL(P)50944 70838 y
FD(inc)27000 72000 y FM(is)276 b(al)-11 b(w)g(ays)278
b(zero.)27000 72240 y
SDict begin H.S end
27000 72240 a 27000 72240 a
SDict begin 12 H.A end
27000
72240 a 27000 72240 a
SDict begin [/View [/XYZ H.V]/Dest (subsection.3.2) cvn /DEST pdfmark
end
27000 72240 a eop end
%%Page: 5 5
TeXDict begin 5 4 bop 0 0 a
SDict begin /product where{pop product(Distiller)search{pop pop pop
version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
grestore}if}{pop}ifelse}{pop}ifelse}if end
0 0 a -111 -111 a
SDict begin H.S end
-111 -111
a -111 -111 a
SDict begin H.R end
-111 -111 a -111 -111 a
SDict begin [/View [/XYZ H.V]/Dest (page.5) cvn /DEST pdfmark end
-111 -111 a 500
13059 a @beginspecial 0 @llx 0 @lly 340 @urx 185 @ury
2160 @rwi @setspecial
%%BeginDocument: Figs/overall.eps
%!PS-Adobe-2.0 EPSF-2.0
%%Title: overall3.eps
%%Creator: zplot version:python version 0.1
%%CreationDate: 20:15:08 03/27/13 CDT
%%DocumentFonts: (atend)
%%BoundingBox: 0 0 340.0 185.0
%%Orientation: Portrait
%%EndComments
% zdraw dictionary
/zdict 256 dict def
zdict begin
/cpx 0 def
/cpy 0 def
/recordcp {currentpoint /cpy exch def /cpx exch def} bind def
/m {moveto} bind def
/l {lineto} bind def
/mr {rmoveto} bind def
/lr {rlineto} bind def
/np {newpath} bind def
/cp {closepath} bind def
/st {stroke} bind def
/fl {fill} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/slw {setlinewidth} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/sc {setrgbcolor} bind def
/sd {setdash} bind def
/lshow {show recordcp} def
/rshow {dup stringwidth pop neg 0 mr show recordcp} def
/cshow {dup stringwidth pop -2 div 0 mr show recordcp} def
end
zdict begin
gs
np
60.0 35.0 m
60.0 35.0 l
80.0 35.0 l
80.0 35.0 l
cp
clip
np
60.0 35.0 m
60.0 35.0 l
80.0 35.0 l
80.0 35.0 l
cp
0.83 0.83 0.83 sc
fl
gr
gs
np
100.0 35.0 m
100.0 79.4283 l
120.0 79.4283 l
120.0 35.0 l
cp
clip
np
100.0 35.0 m
100.0 79.4283 l
120.0 79.4283 l
120.0 35.0 l
cp
0.83 0.83 0.83 sc
fl
gr
gs
np
140.0 35.0 m
140.0 35.392 l
160.0 35.392 l
160.0 35.0 l
cp
clip
np
140.0 35.0 m
140.0 35.392 l
160.0 35.392 l
160.0 35.0 l
cp
0.83 0.83 0.83 sc
fl
gr
gs
np
180.0 35.0 m
180.0 35.0 l
200.0 35.0 l
200.0 35.0 l
cp
clip
np
180.0 35.0 m
180.0 35.0 l
200.0 35.0 l
200.0 35.0 l
cp
0.83 0.83 0.83 sc
fl
gr
gs
np
220.0 35.0 m
220.0 37.6154333333 l
240.0 37.6154333333 l
240.0 35.0 l
cp
clip
np
220.0 35.0 m
220.0 37.6154333333 l
240.0 37.6154333333 l
240.0 35.0 l
cp
0.83 0.83 0.83 sc
fl
gr
gs
np
260.0 35.0 m
260.0 107.2498 l
280.0 107.2498 l
280.0 35.0 l
cp
clip
np
260.0 35.0 m
260.0 107.2498 l
280.0 107.2498 l
280.0 35.0 l
cp
0.83 0.83 0.83 sc
fl
gr
gs
np
300.0 35.0 m
300.0 163.426666667 l
320.0 163.426666667 l
320.0 35.0 l
cp
clip
np
300.0 35.0 m
300.0 163.426666667 l
320.0 163.426666667 l
320.0 35.0 l
cp
0.83 0.83 0.83 sc
fl
gr
gs
np
60.0 35.0 m
60.0 35.0 l
80.0 35.0 l
80.0 35.0 l
cp
clip
np
60.0 35.0 m
60.0 35.0 l
80.0 35.0 l
80.0 35.0 l
cp
0.00 0.00 0.00 sc
fl
gr
gs
np
100.0 35.0 m
100.0 79.4283 l
120.0 79.4283 l
120.0 35.0 l
cp
clip
np
100.0 35.0 m
100.0 79.4283 l
120.0 79.4283 l
120.0 35.0 l
cp
0.00 0.00 0.00 sc
fl
gr
gs
np
140.0 35.0 m
140.0 35.392 l
160.0 35.392 l
160.0 35.0 l
cp
clip
np
140.0 35.0 m
140.0 35.392 l
160.0 35.392 l
160.0 35.0 l
cp
0.00 0.00 0.00 sc
fl
gr
gs
np
180.0 35.0 m
180.0 35.0 l
200.0 35.0 l
200.0 35.0 l
cp
clip
np
180.0 35.0 m
180.0 35.0 l
200.0 35.0 l
200.0 35.0 l
cp
0.00 0.00 0.00 sc
fl
gr
gs
np
220.0 35.0 m
220.0 37.6154333333 l
240.0 37.6154333333 l
240.0 35.0 l
cp
clip
np
220.0 35.0 m
220.0 37.6154333333 l
240.0 37.6154333333 l
240.0 35.0 l
cp
0.00 0.00 0.00 sc
fl
gr
gs
np
260.0 35.0 m
260.0 107.2498 l
280.0 107.2498 l
280.0 35.0 l
cp
clip
np
260.0 35.0 m
260.0 107.2498 l
280.0 107.2498 l
280.0 35.0 l
cp
0.00 0.00 0.00 sc
fl
gr
gs
np
300.0 35.0 m
300.0 163.426666667 l
320.0 163.426666667 l
320.0 35.0 l
cp
clip
np
300.0 35.0 m
300.0 163.426666667 l
320.0 163.426666667 l
320.0 35.0 l
cp
0.00 0.00 0.00 sc
fl
gr
gs
np
60.0 35.0 m
60.0 35.0 l
80.0 35.0 l
80.0 35.0 l
cp
clip
np
60.0 35.0 m
60.0 35.0 l
80.0 35.0 l
80.0 35.0 l
cp
0.50 0.50 0.50 sc
fl
gr
gs
np
100.0 35.0 m
100.0 79.4283 l
120.0 79.4283 l
120.0 35.0 l
cp
clip
np
100.0 35.0 m
100.0 79.4283 l
120.0 79.4283 l
120.0 35.0 l
cp
0.50 0.50 0.50 sc
fl
gr
gs
np
140.0 35.0 m
140.0 35.392 l
160.0 35.392 l
160.0 35.0 l
cp
clip
np
140.0 35.0 m
140.0 35.392 l
160.0 35.392 l
160.0 35.0 l
cp
0.50 0.50 0.50 sc
fl
gr
gs
np
180.0 35.0 m
180.0 35.0 l
200.0 35.0 l
200.0 35.0 l
cp
clip
np
180.0 35.0 m
180.0 35.0 l
200.0 35.0 l
200.0 35.0 l
cp
0.50 0.50 0.50 sc
fl
gr
gs
np
220.0 35.0 m
220.0 37.6154333333 l
240.0 37.6154333333 l
240.0 35.0 l
cp
clip
np
220.0 35.0 m
220.0 37.6154333333 l
240.0 37.6154333333 l
240.0 35.0 l
cp
0.50 0.50 0.50 sc
fl
gr
gs
np
260.0 35.0 m
260.0 104.140866667 l
280.0 104.140866667 l
280.0 35.0 l
cp
clip
np
260.0 35.0 m
260.0 104.140866667 l
280.0 104.140866667 l
280.0 35.0 l
cp
0.50 0.50 0.50 sc
fl
gr
gs
np
300.0 35.0 m
300.0 162.516666667 l
320.0 162.516666667 l
320.0 35.0 l
cp
clip
np
300.0 35.0 m
300.0 162.516666667 l
320.0 162.516666667 l
320.0 35.0 l
cp
0.50 0.50 0.50 sc
fl
gr
gs
np
60.0 35.0 m
60.0 35.0 l
80.0 35.0 l
80.0 35.0 l
cp
clip
np
60.0 35.0 m
60.0 35.0 l
80.0 35.0 l
80.0 35.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
100.0 35.0 m
100.0 79.4283 l
120.0 79.4283 l
120.0 35.0 l
cp
clip
np
100.0 35.0 m
100.0 79.4283 l
120.0 79.4283 l
120.0 35.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
140.0 35.0 m
140.0 35.392 l
160.0 35.392 l
160.0 35.0 l
cp
clip
np
140.0 35.0 m
140.0 35.392 l
160.0 35.392 l
160.0 35.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
180.0 35.0 m
180.0 35.0 l
200.0 35.0 l
200.0 35.0 l
cp
clip
np
180.0 35.0 m
180.0 35.0 l
200.0 35.0 l
200.0 35.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
220.0 35.0 m
220.0 37.6154333333 l
240.0 37.6154333333 l
240.0 35.0 l
cp
clip
np
220.0 35.0 m
220.0 37.6154333333 l
240.0 37.6154333333 l
240.0 35.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
260.0 35.0 m
260.0 100.5221 l
280.0 100.5221 l
280.0 35.0 l
cp
clip
np
260.0 35.0 m
260.0 100.5221 l
280.0 100.5221 l
280.0 35.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
300.0 35.0 m
300.0 158.603666667 l
320.0 158.603666667 l
320.0 35.0 l
cp
clip
np
300.0 35.0 m
300.0 158.603666667 l
320.0 158.603666667 l
320.0 35.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
70.0 35.0315 m
70.0 34.9685 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
67.5 34.9685 m
72.5 34.9685 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
67.5 35.0315 m
72.5 35.0315 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
110.0 80.0093 m
110.0 78.8475333333 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
107.5 78.8475333333 m
112.5 78.8475333333 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
107.5 80.0093 m
112.5 80.0093 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
150.0 34.9253333333 m
150.0 35.8586666667 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
147.5 35.8586666667 m
152.5 35.8586666667 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
147.5 34.9253333333 m
152.5 34.9253333333 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
190.0 35.1726666667 m
190.0 34.8273333333 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
187.5 34.8273333333 m
192.5 34.8273333333 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
187.5 35.1726666667 m
192.5 35.1726666667 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
230.0 40.9416 m
230.0 34.2895 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
227.5 34.2895 m
232.5 34.2895 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
227.5 40.9416 m
232.5 40.9416 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
270.0 153.268966667 m
270.0 61.2306333333 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
267.5 61.2306333333 m
272.5 61.2306333333 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
267.5 153.268966667 m
272.5 153.268966667 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
310.0 163.216666667 m
310.0 163.636666667 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
307.5 163.636666667 m
312.5 163.636666667 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
307.5 163.216666667 m
312.5 163.216666667 l
0.41 0.41 0.41 sc
0.5 slw
st
gr
gs
np
49.75 35.0 m
330.25 35.0 l
0.5 slw
st
gr
gs
np
50.0 34.75 m
50.0 175.25 l
0.5 slw
st
gr
gs
np
46.0 35.0 m
50.0 35.0 l
0.5 slw
st
gr
gs
np
46.0 58.3333333333 m
50.0 58.3333333333 l
0.5 slw
st
gr
gs
np
46.0 81.6666666667 m
50.0 81.6666666667 l
0.5 slw
st
gr
gs
np
46.0 105.0 m
50.0 105.0 l
0.5 slw
st
gr
gs
np
46.0 128.333333333 m
50.0 128.333333333 l
0.5 slw
st
gr
gs
np
46.0 151.666666667 m
50.0 151.666666667 l
0.5 slw
st
gr
gs
np
46.0 175.0 m
50.0 175.0 l
0.5 slw
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
70.0 28.0 m
0.0 -7.2 mr
(Seq) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
110.0 28.0 m
0.0 -7.2 mr
(Rand) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
150.0 28.0 m
0.0 -7.2 mr
(Create) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
190.0 28.0 m
0.0 -7.2 mr
(Web) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
230.0 28.0 m
0.0 -7.2 mr
(File) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
270.0 28.0 m
0.0 -7.2 mr
(Varmail) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
310.0 28.0 m
0.0 -7.2 mr
(MySQL) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 35.0 m
0.0 -3.6 mr
(0) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 58.3333333333 m
0.0 -3.6 mr
(10) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 81.6666666667 m
0.0 -3.6 mr
(20) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 105.0 m
0.0 -3.6 mr
(30) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 128.333333333 m
0.0 -3.6 mr
(40) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 151.666666667 m
0.0 -3.6 mr
(50) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
43.0 175.0 m
0.0 -3.6 mr
(60) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
22.2 105.0 m
gs
90.0 rotate
(P (inconsistency)) cshow
gr
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10 scalefont setfont
70.0 11.6666666667 m
0.0 -3.6 mr
(Write) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10 scalefont setfont
110.0 11.6666666667 m
0.0 -3.6 mr
(Write) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10 scalefont setfont
150.0 11.6666666667 m
0.0 -3.6 mr
(Files) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10 scalefont setfont
190.0 11.6666666667 m
0.0 -3.6 mr
(Server) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10 scalefont setfont
230.0 11.6666666667 m
0.0 -3.6 mr
(Server) cshow
st
gr
gs
np
60.0 170.0 m
60.0 180.0 l
70.0 180.0 l
70.0 170.0 l
cp
clip
np
60.0 170.0 m
60.0 180.0 l
70.0 180.0 l
70.0 170.0 l
cp
0.83 0.83 0.83 sc
fl
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
74.0 175.0 m
0.0 -4.32 mr
(Early Checkpoint) lshow
st
gr
gs
np
60.0 157.0 m
60.0 167.0 l
70.0 167.0 l
70.0 157.0 l
cp
clip
np
60.0 157.0 m
60.0 167.0 l
70.0 167.0 l
70.0 157.0 l
cp
0.00 0.00 0.00 sc
fl
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
74.0 162.0 m
0.0 -4.32 mr
(Transaction Misorder) lshow
st
gr
gs
np
60.0 144.0 m
60.0 154.0 l
70.0 154.0 l
70.0 144.0 l
cp
clip
np
60.0 144.0 m
60.0 154.0 l
70.0 154.0 l
70.0 144.0 l
cp
0.50 0.50 0.50 sc
fl
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
74.0 149.0 m
0.0 -4.32 mr
(Mixed) lshow
st
gr
gs
np
60.0 131.0 m
60.0 141.0 l
70.0 141.0 l
70.0 131.0 l
cp
clip
np
60.0 131.0 m
60.0 141.0 l
70.0 141.0 l
70.0 131.0 l
cp
0.66 0.66 0.66 sc
fl
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
74.0 136.0 m
0.0 -4.32 mr
(Early Commit) lshow
st
gr
% zdraw epilogue
end
showpage
%%Trailer
%%DocumentFonts: Helvetica
%%EndDocument
@endspecial 0 13761 a FM(Figure)304 b(3:)4450 13761
y
SDict begin H.S end
4450 13761 a 4450 13761 a
SDict begin H.R end
4450 13761 a 4450 13761 a
SDict begin [/View [/XYZ H.V]/Dest (figure.3) cvn /DEST pdfmark end
4450 13761 a Fx(W)-83 b(orkload)305 b(Study)g(of)e FL(P)14302
13927 y FD(inc)15358 13761 y Fx(.)843 b Fw(The)273 b(\002gur)-37
b(e)273 b(shows)f(P)23998 13921 y Fo(inc)0 14957 y Fw(for)296
b(six)g(workloads.)451 b(The)297 b(\002r)-10 b(st)296
b(two)g(workloads)g(ar)-37 b(e)296 b(sequential)i(and)0
16152 y(r)-15 b(andom)305 b(writes)e(to)i(a)g(1)f(GB)h(\002le)-15
b(.)476 b(F)-45 b(ileserver)-111 b(,)318 b(W)-92 b(ebserver)-111
b(,)319 b(and)305 b(V)-111 b(ar)-20 b(-)0 17348 y(mail)213
b(ar)-37 b(e)212 b(part)h(of)f(the)h(F)-45 b(ilebenc)-15
b(h)214 b(benc)-15 b(hmark)214 b(suite)e([)19021 17356
y
SDict begin H.S end
19021 17356 a -8 x Fw(17)20017 16680 y
SDict begin H.R end
20017 16680
a 20017 17348 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Filebench05) cvn H.B /ANN pdfmark end
20017 17348 a Fw(].)296 b(F)-45 b(ileserver)0
18543 y(performs)347 b(a)i(sequence)g(of)f(cr)-37 b(eates,)373
b(deletes,)h(appends,)f(r)-37 b(eads,)373 b(and)0 19739
y(writes.)483 b(W)-92 b(ebserver)307 b(emulates)i(a)e(multi-thr)-37
b(eaded)308 b(web)g(host)f(server)-111 b(,)0 20934 y(performing)248
b(sequences)i(of)e(open-r)-37 b(ead-close)249 b(on)g(multiple)g
(\002les)f(plus)0 22130 y(a)443 b(lo)-10 b(g)443 b(\002le)g(append.)890
b(V)-111 b(armail)443 b(emulates)g(a)g(multi-thr)-37
b(eaded)444 b(mail)0 23326 y(server)-111 b(,)495 b(performing)447
b(a)f(sequence)h(of)f(cr)-37 b(eate-append-sync,)497
b(r)-37 b(ead-)0 24521 y(append-sync,)306 b(r)-37 b(eads,)305
b(and)294 b(deletes)h(in)f(a)g(single)g(dir)-37 b(ectory)-55
b(.)443 b(MySQL)0 25717 y(r)-37 b(epr)g(esents)285 b(the)g(OL)-20
b(TP)285 b(benc)-15 b(hmark)286 b(fr)-45 b(om)285 b(Sysbenc)-15
b(h)286 b([)19748 25717 y
SDict begin H.S end
19748 25717 a Fw(1)20246 25049
y
SDict begin H.R end
20246 25049 a 20246 25717 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Sysbench-04) cvn H.B /ANN pdfmark end
20246 25717 a Fw(].)416
b(Eac)-15 b(h)285 b(bar)0 26912 y(is)391 b(br)-45 b(ok)-10
b(en)393 b(down)e(into)h(the)h(per)-37 b(cent)392 b(contrib)-20
b(ution)393 b(of)e(the)i(dif)-18 b(fer)-37 b(ent)0 28108
y(types)249 b(of)h(misor)-37 b(dering)-15 b(.)308 b(Standar)-37
b(d)250 b(de)-15 b(viations)249 b(ar)-37 b(e)250 b(shown)e(as)h(well.)0
30404 y FF(3.2)1329 b(F)-33 b(actors)331 b(affecting)i
FP(P)13487 30603 y Fw(inc)0 32282 y FM(W)-89 b(e)378
b(no)-28 b(w)379 b(e)-17 b(xplore)379 b FL(P)8299 32448
y FD(inc)9733 32282 y FM(more)f(systematically)-72 b(.)645
b(Speci\002cally)-72 b(,)0 33611 y(we)451 b(determine)g(sensiti)-28
b(vity)450 b(to)g(w)-11 b(orkload)452 b(and)f(disk)f(param-)0
34939 y(eters)e(such)i(as)e(queue)j(size)e(and)h(placement)g(of)f(the)g
(journal)0 36267 y(relati)-28 b(v)-17 b(e)402 b(to)f(\002le-system)g
(structures.)714 b(W)-89 b(e)401 b(use)g(the)h(v)-28
b(alidated)0 37596 y(Seag)-6 b(ate)525 b(Cheetah)g(15k.5)e(disk)g
(model)g([)17147 37596 y
SDict begin H.S end
17147 37596 a FM(4)17700 36841
y
SDict begin H.R end
17700 36841 a 17700 37596 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.BucyEtAl08--DiskSim) cvn H.B /ANN pdfmark end
17700 37596 a FM(])f(pro)-17
b(vided)525 b(with)0 38924 y(DiskSim)277 b(for)g(our)g(e)-17
b(xperiments.)0 39164 y
SDict begin H.S end
0 39164 a 0 39164 a
SDict begin 12 H.A end
0 39164 a
0 39164 a
SDict begin [/View [/XYZ H.V]/Dest (subsubsection.3.2.1) cvn /DEST
pdfmark end
0 39164 a 1683 x Fx(3.2.1)1108 b(W)-83 b(orkload)0
42725 y FM(W)-89 b(e)250 b(\002rst)f(sho)-28 b(w)251
b(ho)-28 b(w)250 b(the)g(w)-11 b(orkload)252 b(can)f(impact)f
FL(P)19963 42891 y FD(inc)21019 42725 y FM(.)334 b(F)-17
b(or)250 b(this)0 44053 y(e)-17 b(xperiment,)454 b(we)418
b(use)f(6)g(dif)-28 b(ferent)418 b(w)-11 b(orkloads)418
b(described)h(in)0 45382 y(the)381 b(caption)i(of)d(Figure)9946
45397 y
SDict begin H.S end
9946 45397 a -15 x FM(3)10499 44627 y
SDict begin H.R end
10499 44627
a 10499 45382 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (figure.3) cvn H.B /ANN pdfmark end
10499 45382 a FM(.)655 b(From)381 b(the)g(\002gure,)408
b(we)381 b(mak)-11 b(e)382 b(the)0 46710 y(follo)-28
b(wing)343 b(observ)-28 b(ations.)541 b(Most)342 b(importantly)-72
b(,)360 b FL(P)19889 46876 y FD(inc)21287 46710 y FM(is)342
b(w)-11 b(ork-)0 48038 y(load)411 b(dependent.)746 b(F)-17
b(or)411 b(e)-17 b(xample,)446 b(if)409 b(a)i(w)-11 b(orkload)412
b(is)d(mostly)0 49367 y(read)379 b(oriented,)405 b(there)380
b(is)d(little)h(chance)j(of)e(inconsistenc)-17 b(y)-72
b(,)406 b(as)0 50695 y(\002le-system)469 b(state)f(is)f(not)i(updated)i
(frequently)e(\()p FL(e)-17 b(.g)g(.)p FM(,)517 b(W)-89
b(eb-)0 52023 y(serv)-17 b(er\).)615 b(Second,)393 b(for)367
b(write-hea)-22 b(vy)369 b(w)-11 b(orkloads,)391 b(the)368
b FL(natur)-41 b(e)0 53352 y FM(of)235 b(the)g(writes)f(is)g
(important;)249 b(w)-11 b(orkloads)236 b(that)f(write)f(randomly)0
54680 y(or)292 b(force)h(writes)e(to)h(disk)g(via)h FK(fsync\(\))f
FM(lead)h(to)f(a)g(f)-11 b(airly)292 b(high)0 56008 y(chance)479
b(of)d(a)h(crash)g(lea)-22 b(ving)478 b(the)f(\002le)g(system)f
(inconsistent)0 57337 y(\()p FL(e)-17 b(.g)g(.)p FM(,)261
b(random)c(writes,)j(MySQL,)d(V)-123 b(armail\).)336
b(Third,)261 b(there)c(can)0 58665 y(be)291 b(high)f(v)-28
b(ariance)293 b(in)c FL(P)9292 58831 y FD(inc)10349 58665
y FM(;)296 b(small)289 b(e)-28 b(v)-17 b(ents)292 b(that)e(change)i
(the)e(or)-22 b(-)0 59994 y(der)311 b(of)g(persistence)g(of)g(writes)f
(can)i(lead)g(to)e(lar)-20 b(ge)312 b(dif)-28 b(ferences)0
61322 y(in)281 b(chances)i(of)e(inconsistenc)-17 b(y)-72
b(.)358 b(Finally)-72 b(,)283 b(e)-28 b(v)-17 b(en)284
b(under)e(e)-17 b(xtreme)0 62650 y(circumstances,)278
b FL(P)7362 62816 y FD(inc)8694 62650 y FM(ne)-28 b(v)-17
b(er)279 b(reaches)f(100\045)g(\(the)e(graph)i(is)d(cut)0
63979 y(of)-28 b(f)399 b(at)g(60\045\);)460 b(there)399
b(are)h(man)-17 b(y)401 b(points)e(in)g(the)g(lifetime)g(of)g(a)0
65307 y(w)-11 b(orkload)279 b(when)f(a)f(crash)h(will)e(not)h(lead)h
(to)f(inconsistenc)-17 b(y)-72 b(.)1107 66687 y(Be)-17
b(yond)392 b(the)e(o)-17 b(v)g(erall)391 b FL(P)10633
66853 y FD(inc)12078 66687 y FM(sho)-28 b(wn)391 b(in)f(the)f(graph,)
419 b(we)390 b(also)0 68015 y(break)437 b(the)f(probability)g(further)g
(by)g(the)g FL(type)g FM(of)g(reordering)0 69343 y(that)315
b(leads)g(to)g(a)f(windo)-28 b(w)317 b(of)d(vulnerability)-72
b(.)458 b(Speci\002cally)-72 b(,)326 b(as-)0 70672 y(suming)411
b(the)g(follo)-28 b(wing)412 b(commit)f(ordering)g(\()p
FL(D)p FC(j)p FL(J)20012 70838 y FD(M)21103 70672 y FC(!)320
b FL(J)22952 70842 y FD(C)23893 70672 y FC(!)0 72000
y FL(M)44 b FM(\),)344 b(we)332 b(determine)h(when)g(a)f(particular)f
(reordering)i(\()p FL(e)-17 b(.g)g(.)p FM(,)345 b FL(J)24379
72170 y FD(C)28300 8195 y @beginspecial 0 @llx 0 @lly
295.200012 @urx 108 @ury 2016 @rwi @setspecial
%%BeginDocument: Figs/queue.eps
%!PS-Adobe-2.0 EPSF-2.0
%%Title: queue.eps
%%Creator: zplot version:python version 0.1
%%CreationDate: 17:18:02 09/14/13 CDT
%%DocumentFonts: (atend)
%%BoundingBox: 0 0 295.2 108.0
%%Orientation: Portrait
%%EndComments
% zdraw dictionary
/zdict 256 dict def
zdict begin
/cpx 0 def
/cpy 0 def
/recordcp {currentpoint /cpy exch def /cpx exch def} bind def
/m {moveto} bind def
/l {lineto} bind def
/mr {rmoveto} bind def
/lr {rlineto} bind def
/np {newpath} bind def
/cp {closepath} bind def
/st {stroke} bind def
/fl {fill} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/slw {setlinewidth} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/sc {setrgbcolor} bind def
/sd {setdash} bind def
/lshow {show recordcp} def
/rshow {dup stringwidth pop neg 0 mr show recordcp} def
/cshow {dup stringwidth pop -2 div 0 mr show recordcp} def
end
zdict begin
gs
np
36.0 28.8 m
50.4 37.1376 l
79.2 59.4432 l
136.8 77.976 l
252.0 80.7552 l
1.5 slw
st
gr
gs
np
36.0 86.1716571429 m
50.4 72.3126857143 l
79.2 68.76 l
136.8 68.76 l
252.0 68.76 l
0.5 slw
[ 2 2 ] 0 sd
st
gr
gs
np
35.5 28.8 m
252.5 28.8 l
st
gr
gs
np
36.0 28.3 m
36.0 101.3 l
st
gr
gs
np
36.0 24.8 m
36.0 28.8 l
st
gr
gs
np
50.4 24.8 m
50.4 28.8 l
st
gr
gs
np
79.2 24.8 m
79.2 28.8 l
st
gr
gs
np
136.8 24.8 m
136.8 28.8 l
st
gr
gs
np
252.0 24.8 m
252.0 28.8 l
st
gr
gs
np
32.0 28.8 m
36.0 28.8 l
st
gr
gs
np
32.0 64.8 m
36.0 64.8 l
st
gr
gs
np
32.0 100.8 m
36.0 100.8 l
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
36.0 21.8 m
0.0 -7.2 mr
(1) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
50.4 21.8 m
0.0 -7.2 mr
(2) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
79.2 21.8 m
0.0 -7.2 mr
(4) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
136.8 21.8 m
0.0 -7.2 mr
(8) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
252.0 21.8 m
0.0 -7.2 mr
(16) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
29.0 28.8 m
0.0 -3.6 mr
(0%) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
29.0 64.8 m
0.0 -3.6 mr
(25%) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
29.0 100.8 m
0.0 -3.6 mr
(50%) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
144.0 8.8 m
0.0 -8.64 mr
(Queue Size) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
2.7 64.8 m
gs
90.0 rotate
(P (inconsistency)) cshow
gr
st
gr
gs
np
252.0 28.3 m
252.0 101.3 l
st
gr
gs
np
252.0 28.8 m
256.0 28.8 l
st
gr
gs
np
252.0 49.3714285714 m
256.0 49.3714285714 l
st
gr
gs
np
252.0 69.9428571429 m
256.0 69.9428571429 l
st
gr
gs
np
252.0 90.5142857143 m
256.0 90.5142857143 l
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
259.0 28.8 m
0.0 -3.6 mr
(0) lshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
259.0 49.3714285714 m
0.0 -3.6 mr
(100) lshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
259.0 69.9428571429 m
0.0 -3.6 mr
(200) lshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
259.0 90.5142857143 m
0.0 -3.6 mr
(300) lshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
282.7 64.8 m
gs
90.0 rotate
0.0 -8.64 mr
( Total I/O Time (s)) cshow
gr
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
165.6 86.4 m
(P (inconsistency)) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
208.8 59.6571428571 m
(Time) cshow
st
gr
% zdraw epilogue
end
showpage
%%Trailer
%%DocumentFonts: Helvetica
%%EndDocument
@endspecial 27000 9698 a FM(Figure)364 b(4:)31628 9698
y
SDict begin H.S end
31628 9698 a 31628 9698 a
SDict begin H.R end
31628 9698 a 31628 9698 a
SDict begin [/View [/XYZ H.V]/Dest (figure.4) cvn /DEST pdfmark end
31628 9698 a Fx(The)g(Effect)e(of)h(Queue)h(Size.)1201
b Fw(The)327 b(\002gur)-37 b(e)326 b(shows)27000 10893
y(P)27484 11053 y Fo(inc)28740 10893 y Fw(\(left)254
b(y-axis\))g(and)g(total)g(I/O)g(completion)i(time)e(\(right)g
(y-axis\))f(as)27000 12089 y(the)360 b(queue)h(size)f(of)g(the)g
(simulated)h(disk)f(varies)f(\(x-axis\).)642 b(F)-105
b(or)359 b(this)27000 13284 y(e)-20 b(xperiment,)251
b(we)d(use)i(the)f(V)-111 b(armail)249 b(workload.)27000
15505 y FM(before)306 b FL(D)p FM(\))f(has)h(resulted.)428
b(The)306 b(graph)h(breaks)f(do)-28 b(wn)307 b FL(P)48916
15671 y FD(inc)50278 15505 y FM(into)27000 16833 y(these)522
b(\002ne-grained)i(reordering)f(cate)-17 b(gories,)585
b(grouped)524 b(into)27000 18161 y(the)399 b(follo)-28
b(wing)400 b(rele)-28 b(v)g(ant)401 b(cases:)587 b FL(early)400
b(commit)f FM(\()p FL(e)-17 b(.g)g(.)p FM(,)430 b FL(J)49959
18331 y FD(C)50893 18161 y FC(!)27000 19490 y FL(J)27463
19656 y FD(M)28234 19490 y FC(j)p FL(D)p FM(\),)425 b
FL(early)396 b(c)-17 b(hec)-22 b(kpoint)400 b FM(\()p
FL(e)-17 b(.g)g(.)p FM(,)426 b FL(M)356 b FC(!)312 b
FL(D)p FC(j)p FL(J)45136 19656 y FD(M)45907 19490 y FC(j)p
FL(J)46636 19660 y FD(C)47256 19490 y FM(\),)425 b FL(tr)-17
b(ansac-)27000 20818 y(tion)237 b(misor)-41 b(der)236
b FM(\()p FL(e)-17 b(.g)g(.)p FM(,)245 b FL(T)141 b(x)36853
20984 y FD(i)37345 20818 y FC(!)208 b FL(T)141 b(x)39907
20985 y FD(i)p Fl(\000)p Fz(1)41237 20818 y FM(\),)244
b(and)237 b FL(mixed)h FM(\()p FL(e)-17 b(.g)g(.)p FM(,)245
b(where)27000 22147 y(more)278 b(than)f(one)i(cate)-17
b(gory)279 b(could)f(be)g(attrib)-22 b(uted\).)28107
23488 y(Our)324 b(e)-17 b(xperiments)325 b(sho)-28 b(w)325
b(that)f(early)g(commit)g(before)h(data,)27000 24817
y(\()p FL(J)27791 24987 y FD(C)28728 24817 y FC(!)317
b FL(D)p FM(\),)436 b(is)404 b(the)h(lar)-20 b(gest)404
b(contrib)-22 b(utor)406 b(to)e FL(P)45373 24983 y FD(inc)46430
24817 y FM(,)436 b(accounting)27000 26145 y(for)307 b(o)-17
b(v)g(er)309 b(90\045)f(of)g(inconsistenc)-17 b(y)310
b(across)d(all)g(w)-11 b(orkloads,)317 b(and)27000 27473
y(100\045)405 b(in)e(some)h(cases)f(\(Fileserv)-17 b(er)-44
b(,)435 b(random)405 b(writes\).)721 b(This)27000 28802
y(is)245 b(not)i(surprising,)252 b(as)246 b(in)g(cases)h(where)g
(transactions)g(are)f(being)27000 30130 y(forced)d(to)f(disk)h(\()p
FL(e)-17 b(.g)g(.)p FM(,)249 b(due)244 b(to)e(calls)g(to)g
FK(fsync\(\))p FM(\),)248 b(data)c(writes)27000 31458
y(\()p FL(D)p FM(\))270 b(are)h(issued)g(just)f(before)i(transaction)g
(writes)e(\()p FL(J)47371 31624 y FD(M)48412 31458 y
FM(and)i FL(J)50703 31628 y FD(C)51324 31458 y FM(\);)27000
32787 y(slight)475 b(re-orderings)h(by)h(the)f(disk)g(will)f(result)g
(in)g FL(J)48444 32957 y FD(C)49540 32787 y FM(being)27000
34115 y(persisted)310 b(\002rst.)443 b(Also,)318 b(for)310
b(some)h(w)-11 b(orkloads)312 b(\(MySQL,)f(V)-123 b(ar)-22
b(-)27000 35443 y(mail\),)302 b FL(all)c FM(cate)-17
b(gories)299 b(might)g(contrib)-22 b(ute;)309 b(though)299
b(rare,)k(early)27000 36772 y(checkpoints)239 b(and)g(transaction)e
(misordering)h(can)g(arise.)329 b(Thus,)27000 38100 y(an)-17
b(y)570 b(approach)h(to)e(pro)-17 b(vide)570 b(reliable)f(consistenc)
-17 b(y)570 b(mecha-)27000 39428 y(nisms)276 b(must)h(consider)h(all)f
(possible)g(causes,)h(not)f(just)f(one.)27000 39668 y
SDict begin H.S end
27000 39668 a 27000 39668 a
SDict begin 12 H.A end
27000 39668 a 27000 39668
a
SDict begin [/View [/XYZ H.V]/Dest (subsubsection.3.2.2) cvn /DEST
pdfmark end
27000 39668 a 1596 x Fx(3.2.2)1108 b(Queue)279 b(Size)27000
43088 y FM(F)-17 b(or)278 b(the)h(remaining)g(studies,)e(we)h(focus)g
(on)h(V)-123 b(armail,)278 b(as)f(it)g(e)-17 b(x-)27000
44417 y(hibits)376 b(the)i(most)e(interesting)h(and)h(v)-28
b(aried)379 b(probability)e(of)g(in-)27000 45745 y(consistenc)-17
b(y)-72 b(.)711 b(First,)428 b(we)399 b(sho)-28 b(w)400
b(ho)-28 b(w)400 b(disk)f(scheduler)i(queue)27000 47073
y(depth)378 b(matters.)640 b(Figure)37279 47073 y
SDict begin H.S end
37279
47073 a FM(4)37832 46318 y
SDict begin H.R end
37832 46318 a 37832 47073
a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (figure.4) cvn H.B /ANN pdfmark end
37832 47073 a 376 w FM(plots)376 b(the)h(results)e(of)h(our)h(e)-17
b(xperi-)27000 48402 y(ment.)629 b(The)373 b(left)e(y-axis)h(plots)g
FL(P)40199 48568 y FD(inc)41627 48402 y FM(as)f(we)i(v)-28
b(ary)373 b(the)f(number)27000 49730 y(of)290 b(outstanding)i(requests)
e(to)g(the)h(disk;)296 b(the)291 b(right)f(y-axis)g(plots)27000
51058 y(performance)279 b(\(o)-17 b(v)g(erall)278 b(time)f(for)g(all)f
(I/Os)g(to)h(complete\).)28107 52400 y(From)433 b(the)f(\002gure,)472
b(we)433 b(observ)-17 b(e)434 b(the)e(follo)-28 b(wing)434
b(three)e(re-)27000 53728 y(sults.)349 b(First,)279 b(when)i(there)f
(is)e(no)i(reordering)h(done)g(by)f(the)g(disk)27000
55057 y(\()p FL(i.e)-17 b(.)p FM(,)250 b(queue)c(size)e(is)e(1\),)251
b(there)244 b(is)f(no)h(chance)j(of)d(inconsistenc)-17
b(y)-72 b(,)27000 56385 y(as)237 b(writes)g(are)g(committed)i(in)e
(order;)251 b(we)238 b(w)-11 b(ould)238 b(\002nd)g(the)g(same)27000
57713 y(result)212 b(if)f(we)i(used)g(FIFO)g(disk)f(scheduling)j
(\(instead)e(of)f(SPTF\).)27000 59042 y(Second,)318 b(e)-28
b(v)-17 b(en)310 b(with)e(small)f(queues)i(\()p FL(e)-17
b(.g)g(.)p FM(,)316 b(8\),)f(a)308 b(great)g(deal)h(of)27000
60370 y(inconsistenc)-17 b(y)372 b(can)g(arise;)416 b(one)371
b(block)g(committed)h(too)e(early)27000 61699 y(to)282
b(disk)h(can)g(result)f(in)g(v)-17 b(ery)284 b(lar)-20
b(ge)283 b(windo)-28 b(ws)283 b(of)g(vulnerability)-72
b(.)27000 63027 y(Finally)g(,)357 b(we)341 b(observ)-17
b(e)342 b(that)f(a)g(modest)g(amount)h(of)f(reordering)27000
64355 y(does)373 b(indeed)h(mak)-11 b(e)374 b(a)e(noticeable)j
(performance)f(dif)-28 b(ference;)27000 65684 y(in-disk)227
b(SPTF)h(scheduling)h(impro)-17 b(v)g(es)228 b(performance)h(by)e
(about)27000 67012 y(30\045)278 b(with)f(a)g(queue)i(size)e(of)g(8)g
(or)g(more.)27000 67252 y
SDict begin H.S end
27000 67252 a 27000 67252 a
SDict begin 12 H.A end
27000 67252 a 27000 67252 a
SDict begin [/View [/XYZ H.V]/Dest (subsubsection.3.2.3) cvn /DEST
pdfmark end
27000 67252 a 1596 x Fx(3.2.3)1108
b(J)-17 b(our)g(nal)280 b(Lay)-28 b(out)27000 70672 y
FM(W)-89 b(e)592 b(no)-28 b(w)593 b(study)f(ho)-28 b(w)593
b(distance)g(between)g(the)f(main)h(\002le-)27000 72000
y(system)378 b(structures)h(and)h(the)f(journal)g(af)-28
b(fects)379 b FL(P)46197 72166 y FD(inc)47253 72000 y
FM(.)648 b(Figure)51447 72015 y
SDict begin H.S end
51447 72015 a -15 x FM(5)52000
71245 y
SDict begin H.R end
52000 71245 a 52000 72000 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (figure.5) cvn H.B /ANN pdfmark end
52000 72000 a eop
end
%%Page: 6 6
TeXDict begin 6 5 bop 0 0 a
SDict begin /product where{pop product(Distiller)search{pop pop pop
version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
grestore}if}{pop}ifelse}{pop}ifelse}if end
0 0 a -111 -111 a
SDict begin H.S end
-111 -111
a -111 -111 a
SDict begin H.R end
-111 -111 a -111 -111 a
SDict begin [/View [/XYZ H.V]/Dest (page.6) cvn /DEST pdfmark end
-111 -111 a 1300
8195 a @beginspecial 0 @llx 0 @lly 295.200012 @urx 108
@ury 2016 @rwi @setspecial
%%BeginDocument: Figs/distance.eps
%!PS-Adobe-2.0 EPSF-2.0
%%Title: distance.eps
%%Creator: zplot version:python version 0.1
%%CreationDate: 17:19:08 09/14/13 CDT
%%DocumentFonts: (atend)
%%BoundingBox: 0 0 295.2 108.0
%%Orientation: Portrait
%%EndComments
% zdraw dictionary
/zdict 256 dict def
zdict begin
/cpx 0 def
/cpy 0 def
/recordcp {currentpoint /cpy exch def /cpx exch def} bind def
/m {moveto} bind def
/l {lineto} bind def
/mr {rmoveto} bind def
/lr {rlineto} bind def
/np {newpath} bind def
/cp {closepath} bind def
/st {stroke} bind def
/fl {fill} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/slw {setlinewidth} bind def
/slc {setlinecap} bind def
/slj {setlinejoin} bind def
/sc {setrgbcolor} bind def
/sd {setdash} bind def
/lshow {show recordcp} def
/rshow {dup stringwidth pop neg 0 mr show recordcp} def
/cshow {dup stringwidth pop -2 div 0 mr show recordcp} def
end
zdict begin
gs
np
36.0 85.7638245652 m
54.9586285714 67.4734955185 l
73.9172571429 62.673766206 l
92.8758857143 58.3175798965 l
111.834514286 53.6193747999 l
130.793142857 49.9262053618 l
149.751771429 47.232415713 l
168.7104 45.8373735288 l
187.669028571 44.2195997947 l
206.627657143 43.2229733772 l
225.586285714 42.6659311432 l
252.0 42.4997002804 l
1.5 slw
st
gr
gs
np
36.0 65.9135314286 m
54.9586285714 65.9816228571 l
73.9172571429 66.5010514286 l
92.8758857143 66.7779428571 l
111.834514286 67.3056 l
130.793142857 67.5736457143 l
149.751771429 68.6532342857 l
168.7104 68.5968685714 l
187.669028571 68.8422857143 l
206.627657143 70.0111542857 l
225.586285714 70.5143314286 l
252.0 71.3024228571 l
0.5 slw
[ 2 2 ] 0 sd
st
gr
gs
np
35.5 28.8 m
252.5 28.8 l
st
gr
gs
np
36.0 28.3 m
36.0 101.3 l
st
gr
gs
np
36.0 24.8 m
36.0 28.8 l
st
gr
gs
np
66.8571428571 24.8 m
66.8571428571 28.8 l
st
gr
gs
np
97.7142857143 24.8 m
97.7142857143 28.8 l
st
gr
gs
np
128.571428571 24.8 m
128.571428571 28.8 l
st
gr
gs
np
159.428571429 24.8 m
159.428571429 28.8 l
st
gr
gs
np
190.285714286 24.8 m
190.285714286 28.8 l
st
gr
gs
np
221.142857143 24.8 m
221.142857143 28.8 l
st
gr
gs
np
252.0 24.8 m
252.0 28.8 l
st
gr
gs
np
32.0 28.8 m
36.0 28.8 l
st
gr
gs
np
32.0 64.8 m
36.0 64.8 l
st
gr
gs
np
32.0 100.8 m
36.0 100.8 l
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
36.0 21.8 m
0.0 -7.2 mr
(0) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
66.8571428571 21.8 m
0.0 -7.2 mr
(20) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
97.7142857143 21.8 m
0.0 -7.2 mr
(40) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
128.571428571 21.8 m
0.0 -7.2 mr
(60) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
159.428571429 21.8 m
0.0 -7.2 mr
(80) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
190.285714286 21.8 m
0.0 -7.2 mr
(100) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
221.142857143 21.8 m
0.0 -7.2 mr
(120) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
252.0 21.8 m
0.0 -7.2 mr
(140) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
29.0 28.8 m
0.0 -3.6 mr
(0%) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
29.0 64.8 m
0.0 -3.6 mr
(25%) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
29.0 100.8 m
0.0 -3.6 mr
(50%) rshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
144.0 8.8 m
0.0 -8.64 mr
(Distance Between Data and Journal (GB)) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
2.7 64.8 m
gs
90.0 rotate
(P (inconsistency)) cshow
gr
st
gr
gs
np
252.0 28.3 m
252.0 101.3 l
st
gr
gs
np
252.0 28.8 m
256.0 28.8 l
st
gr
gs
np
252.0 49.3714285714 m
256.0 49.3714285714 l
st
gr
gs
np
252.0 69.9428571429 m
256.0 69.9428571429 l
st
gr
gs
np
252.0 90.5142857143 m
256.0 90.5142857143 l
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
259.0 28.8 m
0.0 -3.6 mr
(0) lshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
259.0 49.3714285714 m
0.0 -3.6 mr
(100) lshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
259.0 69.9428571429 m
0.0 -3.6 mr
(200) lshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 10.0 scalefont setfont
259.0 90.5142857143 m
0.0 -3.6 mr
(300) lshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
282.7 64.8 m
gs
90.0 rotate
0.0 -8.64 mr
(Total I/O Time (s)) cshow
gr
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
128.571428571 36.0 m
(P (inconsistency)) cshow
st
gr
gs
np
0.00 0.00 0.00 sc
(Helvetica) findfont 12 scalefont setfont
190.285714286 74.0571428571 m
(Time) cshow
st
gr
% zdraw epilogue
end
showpage
%%Trailer
%%DocumentFonts: Helvetica
%%EndDocument
@endspecial 0 10098 a FM(Figure)328 b(5:)4521 10098
y
SDict begin H.S end
4521 10098 a 4521 10098 a
SDict begin H.R end
4521 10098 a 4521 10098 a
SDict begin [/View [/XYZ H.V]/Dest (figure.5) cvn /DEST pdfmark end
4521 10098 a Fx(The)f(Effect)g(of)g(Distance.)985 b Fw(The)295
b(\002gur)-37 b(e)294 b(shows)f(P)23998 10258 y Fo(inc)0
11293 y Fw(\(left)281 b(y-axis\))f(and)i(total)f(I/O)g(completion)h
(time)f(\(right)f(y-axis\))h(as)g(the)0 12489 y(distance)227
b(\(in)g(GB\))g(between)h(the)f(data)g(r)-37 b(e)d(gion)228
b(and)f(the)h(journal)f(of)g(the)0 13684 y(simulated)355
b(disk)g(is)f(incr)-37 b(eased)356 b(\(x-axis\).)625
b(F)-105 b(or)355 b(this)f(e)-20 b(xperiment,)383 b(we)0
14880 y(use)249 b(the)h(V)-111 b(armail)249 b(workload,)g(with)f(queue)
i(size)f(set)g(to)g(8.)0 17922 y FM(plots)267 b(the)g(results)f(of)g(v)
-28 b(arying)269 b(the)e(location)i(of)d(V)-123 b(armail')-61
b(s)267 b(data)0 19250 y(and)229 b(metadata)h(structures)d(\(which)i
(are)f(usually)h(located)h(in)e(one)0 20578 y(disk)277
b(area\))g(from)g(close)h(to)f(the)g(journal)h(\(left\))d(to)i(f)-11
b(ar)277 b(a)-17 b(w)-11 b(ay)-72 b(.)1107 22331 y(From)341
b(the)g(\002gure,)358 b(we)341 b(observ)-17 b(e)342 b(distance)g(mak)
-11 b(es)342 b(a)f(signif-)0 23659 y(icant)474 b(dif)-28
b(ference)474 b(in)f FL(P)9428 23825 y FD(inc)10484 23659
y FM(.)931 b(Recall)474 b(that)f(one)h(of)f(the)g(major)0
24987 y(causes)297 b(of)g(reordering)g(is)f(early)h(commit)g(\()p
FL(i.e)-17 b(.)p FM(,)300 b FL(J)19237 25157 y FD(C)20154
24987 y FM(written)c(be-)0 26316 y(fore)329 b FL(D)p
FM(\);)356 b(by)330 b(separating)h(the)f(location)h(of)e(data)h(and)h
(the)f(jour)-22 b(-)0 27644 y(nal,)276 b(it)e(becomes)j(increasingly)f
(unlik)-11 b(ely)276 b(for)f(such)h(reordering)0 28972
y(to)361 b(occur)-61 b(.)596 b(Secondly)-72 b(,)384 b(we)361
b(also)g(observ)-17 b(e)362 b(that)f(increased)i(dis-)0
30301 y(tance)393 b(is)e(not)h(a)g(panacea;)452 b(inconsistenc)-17
b(y)395 b(\(10\045\))c(still)g(arises)0 31629 y(for)400
b(V)-123 b(armail.)713 b(Finally)-72 b(,)432 b(increased)402
b(distance)f(from)f(the)h(jour)-22 b(-)0 32958 y(nal)264
b(can)g(af)-28 b(fect)264 b(performance)h(some)-28 b(what;)270
b(there)263 b(is)g(a)g(14\045)h(de-)0 34286 y(crease)334
b(in)f(performance)j(when)e(mo)-17 b(ving)336 b(V)-123
b(armail')-61 b(s)332 b(data)j(and)0 35614 y(metadata)279
b(from)d(right)h(ne)-17 b(xt)279 b(to)d(the)i(journal)g(to)f(140)h(GB)f
(a)-17 b(w)-11 b(ay)-72 b(.)1107 37367 y(W)-89 b(e)351
b(also)f(studied)h(a)f(number)i(of)e(other)g(f)-11 b(actors)350
b(that)g(might)0 38695 y(af)-28 b(fect)238 b FL(P)3267
38861 y FD(inc)4323 38695 y FM(,)244 b(including)239
b(the)f(placement)h(of)e(the)g(journal)h(as)f(it)f(re-)0
40023 y(lates)301 b(to)f(track)i(boundaries)g(on)g(the)f(disk,)306
b(and)c(other)g(potential)0 41352 y(f)-11 b(actors.)333
b(In)249 b(general,)256 b(these)250 b(parameters)f(did)h(not)f
(signi\002cantly)0 42680 y(af)-28 b(fect)277 b FL(P)3306
42846 y FD(inc)4640 42680 y FM(and)h(thus)f(are)g(not)g(included.)0
42855 y
SDict begin H.S end
0 42855 a 0 42855 a
SDict begin 12 H.A end
0 42855 a 0 42855 a
SDict begin [/View [/XYZ H.V]/Dest (subsection.3.3) cvn /DEST pdfmark
end
0 42855
a 2823 x FF(3.3)1329 b(Summary)0 48090 y FM(The)305 b(classic)f
(approach)k(to)c(journaling)h(is)f(o)-17 b(v)g(erly)306
b(pessimistic,)0 49418 y(forcing)362 b(writes)e(to)h(persistent)g
(storage)h(often)g(when)g(only)g(or)-22 b(-)0 50746 y(dering)489
b(is)e(desired.)976 b(As)487 b(a)h(result,)540 b(users)487
b(ha)-22 b(v)-17 b(e)490 b(sometimes)0 52075 y(turned)436
b(to)f(probabilistic)h(journaling,)475 b(taking)437 b(their)e(chances)0
53403 y(with)282 b(consistenc)-17 b(y)284 b(in)e(order)h(to)f(g)-6
b(ain)284 b(more)e(performance.)361 b(W)-89 b(e)0 54731
y(ha)-22 b(v)-17 b(e)449 b(carefully)g(studied)f(which)g(f)-11
b(actors)447 b(af)-28 b(fect)448 b(the)g(consis-)0 56060
y(tenc)-17 b(y)382 b(of)e(the)g(probabilistic)g(approach,)409
b(and)381 b(sho)-28 b(wn)381 b(that)f(for)0 57388 y(some)337
b(w)-11 b(orkloads,)353 b(it)336 b(w)-11 b(orks)337 b(f)-11
b(airly)336 b(well;)367 b(unfortunately)-72 b(,)353 b(for)0
58716 y(other)482 b(w)-11 b(orkloads)483 b(with)e(a)g(high)i(number)g
(of)e(random-write)0 60045 y(I/Os,)268 b(or)e(where)i(the)g
(application)g(itself)e(forces)h(traf)-28 b(\002c)267
b(to)g(disk,)0 61373 y(the)399 b(probability)g(of)f(inconsistenc)-17
b(y)401 b(becomes)f(high.)709 b(As)397 b(de-)0 62702
y(vices)273 b(become)i(more)e(sophisticated,)i(and)f(can)g(handle)g(a)f
(lar)-20 b(ge)0 64030 y(number)220 b(of)d(outstanding)j(requests,)230
b(the)219 b(odds)g(that)f(a)g(crash)h(will)0 65358 y(cause)312
b(inconsistenc)-17 b(y)313 b(increases.)445 b(Thus,)320
b(to)311 b(adv)-28 b(ance)314 b(be)-17 b(yond)0 66687
y(the)435 b(probabilistic)g(approach,)476 b(a)435 b(system)f(must)h
(include)h(ma-)0 68015 y(chinery)411 b(to)f(either)g(a)-22
b(v)g(oid)411 b(situations)e(that)h(lead)h(to)f(inconsis-)0
69343 y(tenc)-17 b(y)-72 b(,)475 b(or)433 b(be)i(able)f(to)g(detect)h
(and)g(reco)-17 b(v)g(er)436 b(when)f(such)f(oc-)0 70672
y(currences)e(arise.)804 b(W)-89 b(e)431 b(no)-28 b(w)432
b(describe)f(one)h(such)f(approach:)0 72000 y FL(optimistic)277
b(cr)-17 b(ash)277 b(consistency)-61 b(.)0 72229 y
SDict begin H.S end
0
72229 a 0 72229 a
SDict begin 12 H.A end
0 72229 a 0 72229 a
SDict begin [/View [/XYZ H.V]/Dest (section.4) cvn /DEST pdfmark end
0 72229 a 27000
1395 a FN(4)1594 b(Optimistic)399 b(Crash)f(Consistency)27000
3502 y FM(Gi)-28 b(v)-17 b(en)366 b(that)f(journaling)h(with)f
(probabilistic)g(consistenc)-17 b(y)366 b(of-)27000 4831
y(ten)356 b(gi)-28 b(v)-17 b(es)357 b(consistent)g(results)d(e)-28
b(v)-17 b(en)358 b(in)e(the)g(presence)i(of)e(sys-)27000
6159 y(tem)439 b(crashes,)480 b(we)439 b(note)h(a)g(ne)-28
b(w)440 b(opportunity)-72 b(.)831 b(The)440 b(goal)g(of)27000
7488 y FL(optimistic)301 b(cr)-17 b(ash)302 b(consistency)p
FM(,)308 b(as)301 b(realized)h(in)f(an)h FL(optimistic)27000
8816 y(journaling)410 b FM(system,)441 b(is)408 b(to)g(commit)h
(transactions)g(to)g(persis-)27000 10144 y(tent)238 b(storage)h(in)g(a)
f(manner)i(that)f(maintains)g(consistenc)-17 b(y)240
b(to)e(the)27000 11473 y(same)e(e)-17 b(xtent)236 b(as)f(pessimistic)f
(journaling,)245 b(b)-22 b(ut)235 b(with)g(nearly)h(the)27000
12801 y(same)260 b(performance)h(as)e(with)g(probabilistic)h
(consistenc)-17 b(y)-72 b(.)340 b(Op-)27000 14129 y(timistic)384
b(journaling)j(requires)e(minimal)g(changes)j(to)d(current)27000
15458 y(disk)252 b(interf)-11 b(aces)253 b(and)h(the)e(journaling)i
(layer;)261 b(in)252 b(particular)-44 b(,)257 b(our)27000
16786 y(approach)369 b(does)d(not)g(require)h(changes)h(to)e
(\002le-system)f(struc-)27000 18114 y(tures)277 b(outside)g(of)g(the)h
(journal)f(\()p FL(e)-17 b(.g)g(.)p FM(,)278 b(backpointers)h([)47934
18129 y
SDict begin H.S end
47934 18129 a -15 x FM(6)48487 17359 y
SDict begin H.R end
48487
17359 a 48487 18114 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Chidambaram+12-NoFS) cvn H.B /ANN pdfmark end
48487 18114 a FM(]\).)28107 19560
y(T)-89 b(o)342 b(describe)h(optimistic)e(crash)h(consistenc)-17
b(y)344 b(and)e(journal-)27000 20888 y(ing,)494 b(we)451
b(be)-17 b(gin)453 b(by)e(describing)h(the)f(intuition)g(behind)i
(opti-)27000 22217 y(mistic)293 b(techniques.)398 b(Optimistic)293
b(crash)i(consistenc)-17 b(y)296 b(is)d(based)27000 23545
y(on)215 b(tw)-11 b(o)215 b(main)g(ideas.)323 b(First,)225
b(checksums)217 b(can)e(remo)-17 b(v)g(e)217 b(the)e(need)27000
24873 y(for)371 b(ordering)h(writes.)625 b(Optimistic)371
b(crash)h(consistenc)-17 b(y)373 b(elim-)27000 26202
y(inates)401 b(the)g(need)i(for)d(ordering)i(during)f(transaction)h
(commit)27000 27530 y(by)414 b(generalizing)j(metadata)e(transactional)
g(checksums)h([)50525 27545 y
SDict begin H.S end
50525 27545 a -15 x FM(23)51631
26775 y
SDict begin H.R end
51631 26775 a 51631 27530 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.PrabhakaranEtAl05-SOSP) cvn H.B /ANN pdfmark end
51631 27530 a FM(])27000
28858 y(to)282 b(include)h(data)g(blocks.)359 b(During)283
b(reco)-17 b(v)g(ery)-72 b(,)286 b(transactions)c(are)27000
30187 y(discarded)d(upon)f(checksum)i(mismatch.)28107
31632 y(Second,)227 b FL(async)-17 b(hr)-50 b(onous)215
b(dur)-17 b(ability)213 b(noti\002cations)g FM(are)f(used)27000
32961 y(to)489 b(delay)h(checkpointing)j(a)c(transaction)h(until)f(it)f
(has)h(been)27000 34289 y(committed)355 b(durably)-72
b(.)576 b(F)-17 b(ortunately)-72 b(,)375 b(this)354 b(delay)h(does)g
(not)f(af-)27000 35617 y(fect)298 b(application)h(performance,)305
b(as)298 b(applications)h(block)g(until)27000 36946 y(the)258
b(transaction)g(is)f(committed,)262 b(not)c(until)g(it)e(is)h
(checkpointed.)27000 38274 y(Additional)227 b(techniques)h(are)d
(required)i(for)e(correctness)h(in)g(sce-)27000 39602
y(narios)277 b(such)h(as)f(block)h(reuse)f(and)i(o)-17
b(v)g(erwrite.)28107 41048 y(W)-89 b(e)457 b(\002rst)g(propose)h(an)f
(additional)i(noti\002cation)g(that)e(disk)27000 42376
y(dri)-28 b(v)-17 b(es)405 b(should)g(e)-17 b(xpose.)727
b(W)-89 b(e)405 b(then)g(e)-17 b(xplain)407 b(ho)-28
b(w)405 b(optimistic)27000 43705 y(journaling)418 b(pro)-17
b(vides)418 b(dif)-28 b(ferent)416 b(properties)h(to)g(preserv)-17
b(e)417 b(the)27000 45033 y(consistenc)-17 b(y)388 b(semantics)f(of)e
(ordered)j(journaling.)671 b(W)-89 b(e)387 b(sho)-28
b(w)27000 46361 y(that)218 b(these)h(properties)f(can)h(be)g(achie)-28
b(v)-17 b(ed)222 b(using)c(a)g(combination)27000 47690
y(of)304 b(optimistic)f(techniques.)426 b(W)-89 b(e)305
b(also)f(describe)h(an)f(additional)27000 49018 y(optimistic)252
b(technique)k(which)e(enables)g(optimistic)e(journaling)27000
50347 y(to)277 b(pro)-17 b(vide)279 b(consistenc)-17
b(y)279 b(equi)-28 b(v)g(alent)280 b(to)d(data)h(journaling.)27000
50586 y
SDict begin H.S end
27000 50586 a 27000 50586 a
SDict begin 12 H.A end
27000 50586 a 27000
50586 a
SDict begin [/View [/XYZ H.V]/Dest (subsection.4.1) cvn /DEST pdfmark
end
27000 50586 a 2056 x FF(4.1)1329 b(Asynchr)-24
b(onous)330 b(Durability)i(Noti\002cation)27000 54614
y FM(The)355 b(current)g(interf)-11 b(ace)355 b(to)f(the)h(disk)f(for)g
(ensuring)h(that)f(write)27000 55943 y(operations)529
b(are)f(performed)h(in)f(a)g(speci\002ed)i(order)e(is)f(pes-)27000
57271 y(simistic:)412 b(the)313 b(upper)-22 b(-le)-28
b(v)-17 b(el)314 b(\002le)f(system)f(tells)f(the)i(lo)-28
b(wer)-22 b(-le)-28 b(v)-17 b(el)27000 58599 y(disk)311
b(when)i(it)d(must)h(\003ush)h(its)f(cache)i(\(or)e(certain)h(blocks\))
g(and)27000 59928 y(the)326 b(disk)f(must)h(then)g(promptly)g(do)h(so.)
488 b(Ho)-28 b(we)g(v)-17 b(er)-44 b(,)340 b(the)326
b(actual)27000 61256 y(ordering)361 b(and)f(durability)g(of)g(writes)e
(to)i(the)g(platter)f(does)h(not)27000 62584 y(matter)-44
b(,)298 b(unless)d(there)g(is)f(a)h(crash.)396 b(Therefore,)300
b(the)295 b(current)g(in-)27000 63913 y(terf)-11 b(ace)219
b(is)e(o)-17 b(v)g(erly)221 b(constraining)f(and)f(limits)e(I/O)h
(performance.)28107 65358 y(Rather)430 b(than)h(requiring)f(the)g(disk)
g(to)f(obe)-17 b(y)432 b(ordering)f(and)27000 66687 y(durability)355
b(commands)i(from)d(the)h(layer)g(abo)-17 b(v)g(e,)376
b(we)355 b(propose)27000 68015 y(that)490 b(the)g(disk)g(be)h(freed)f
(to)g(perform)g(reads)g(and)h(writes)e(in)27000 69343
y(the)291 b(order)h(that)f(optimizes)h(its)d(scheduling)294
b(and)e(performance.)27000 70672 y(Thus,)432 b(the)401
b(performance)i(of)d(the)h(disk)g(is)e(optimized)j(for)e(the)27000
72000 y(common)279 b(case)f(in)f(which)h(there)f(is)g(no)g(crash.)p
eop end
%%Page: 7 7
TeXDict begin 7 6 bop 0 0 a
SDict begin /product where{pop product(Distiller)search{pop pop pop
version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
grestore}if}{pop}ifelse}{pop}ifelse}if end
0 0 a -111 -111 a
SDict begin H.S end
-111 -111
a -111 -111 a
SDict begin H.R end
-111 -111 a -111 -111 a
SDict begin [/View [/XYZ H.V]/Dest (page.7) cvn /DEST pdfmark end
-111 -111 a 1107
1107 a FM(Gi)-28 b(v)-17 b(en)280 b(that)f(the)g(\002le)g(system)g
(must)f(still)f(be)i(able)h(to)e(guaran-)0 2435 y(tee)g(consistenc)-17
b(y)280 b(and)f(durability)f(in)f(the)h(e)-28 b(v)-17
b(ent)280 b(of)e(a)f(crash,)h(we)0 3764 y(propose)322
b(a)g(minimal)f(e)-17 b(xtension)323 b(to)e(the)g(disk)g(interf)-11
b(ace.)476 b(W)-44 b(ith)0 5092 y(an)307 b FL(async)-17
b(hr)-50 b(onous)310 b(dur)-17 b(ability)308 b(noti\002cation)g
FM(the)f(disk)f(informs)0 6420 y(the)467 b(upper)-22
b(-le)-28 b(v)-17 b(el)469 b(client)f(that)e(a)i(speci\002c)g(write)e
(request)h(has)0 7749 y(completed)411 b(and)f(is)f(no)-28
b(w)410 b(guaranteed)i(to)d(be)g(durable.)741 b(Thus)0
9077 y(there)334 b(will)e(be)i(tw)-11 b(o)333 b(noti\002cations)i(from)
e(the)g(disk:)456 b(\002rst)332 b(when)0 10405 y(the)341
b(disk)g(has)g(recei)-28 b(v)-17 b(ed)343 b(the)e(write)f(and)i(later)e
(when)i(the)f(write)0 11734 y(has)260 b(been)h(persisted.)337
b(Some)261 b(interf)-11 b(aces,)263 b(such)e(as)e(F)-17
b(orced)262 b(Unit)0 13062 y(Access)343 b(\(FU)-44 b(A\),)342
b(pro)-17 b(vide)344 b(a)f(single,)359 b FL(sync)-17
b(hr)-50 b(onous)345 b FM(durability)0 14390 y(noti\002cation:)444
b(the)327 b(dri)-28 b(v)-17 b(e)328 b(recei)-28 b(v)-17
b(es)329 b(the)e(request)g(and)h(indicates)0 15719 y(completion)277
b(when)g(the)f(request)g(has)f(been)i(persisted)e([)21723
15719 y
SDict begin H.S end
21723 15719 a FM(14)22829 14964 y
SDict begin H.R end
22829 14964
a 22829 15719 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.URLSATAspec) cvn H.B /ANN pdfmark end
22829 15719 a FM(,)23247 15734 y
SDict begin H.S end
23247
15734 a -15 x FM(37)24353 14964 y
SDict begin H.R end
24353 14964 a 24353
15719 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Weber04-SCSI) cvn H.B /ANN pdfmark end
24353 15719 a FM(].)0 17047 y(T)-89 b(agged)337
b(Queuing)g(allo)-28 b(ws)334 b(a)h(limited)f(number)i(of)e(requests)h
(to)0 18376 y(be)340 b(outstanding)g(at)f(a)g(gi)-28
b(v)-17 b(en)341 b(point)e(of)g(time)g([)18161 18391
y
SDict begin H.S end
18161 18391 a -15 x FM(15)19267 17621 y
SDict begin H.R end
19267 17621
a 19267 18376 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Kozierok01-SCSIHistory) cvn H.B /ANN pdfmark end
19267 18376 a FM(,)19729 18391 y
SDict begin H.S end
19729
18391 a -15 x FM(37)20835 17621 y
SDict begin H.R end
20835 17621 a 20835
18376 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.Weber04-SCSI) cvn H.B /ANN pdfmark end
20835 18376 a FM(].)529 b(Unfor)-22 b(-)0 19704
y(tunately)-72 b(,)349 b(man)-17 b(y)336 b(dri)-28 b(v)-17
b(es)335 b(do)f(not)h(implement)g(tagged)g(queuing)0
21032 y(and)416 b(FU)-44 b(A)415 b(reliably)h([)8763
21047 y
SDict begin H.S end
8763 21047 a -15 x FM(18)9869 20277 y
SDict begin H.R end
9869 20277
a 9869 21032 a
SDict begin [/Color [0 1 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (cite.marshall2012disks) cvn H.B /ANN pdfmark end
9869 21032 a FM(].)757 b(Furthermore,)450
b(a)415 b(request)h(tagged)0 22361 y(with)506 b(FU)-44
b(A)506 b(also)g(implies)g(ur)-20 b(genc)j(y)-72 b(,)566
b(prompting)508 b(some)e(im-)0 23689 y(plementations)382
b(to)e(force)g(the)h(request)f(to)g(disk)g(immediately)-72
b(.)0 25017 y(While)392 b(a)g(correct)h(implementation)h(of)e(tagged)i
(queuing)h(and)0 26346 y(FU)-44 b(A)465 b(may)i(suf)-28
b(\002ce)466 b(for)f(optimistic)f(crash)i(consistenc)-17
b(y)-72 b(,)514 b(we)0 27674 y(feel)486 b(that)g(an)g(interf)-11
b(ace)487 b(that)f(decouples)i(request)f(ackno)-28 b(wl-)0
29002 y(edgement)366 b(from)d(persistence)h(enables)h(higher)g(le)-28
b(v)-17 b(els)364 b(of)f(I/O)0 30331 y(concurrenc)-17
b(y)488 b(and)e(thus)f(pro)-17 b(vides)486 b(a)f(better)g(foundation)i
(on)0 31659 y(which)278 b(to)f(b)-22 b(uild)278 b(OptFS.)0
31899 y
SDict begin H.S end
0 31899 a 0 31899 a
SDict begin 12 H.A end
0 31899 a 0 31899 a
SDict begin [/View [/XYZ H.V]/Dest (subsection.4.2) cvn /DEST pdfmark
end
0 31899
a 2044 x FF(4.2)1329 b(Optimistic)332 b(Consistency)g(Pr)-24
b(operties)0 35909 y FM(As)464 b(described)i(in)e(Section)11510
35922 y
SDict begin H.S end
11510 35922 a -13 x FM(2.2)12893 35154 y
SDict begin H.R end
12893
35154 a 12893 35909 a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (subsection.2.2) cvn H.B /ANN pdfmark end
12893 35909 a FM(,)511 b(ordered)466
b(journaling)f(mode)0 37238 y(in)-44 b(v)-22 b(olv)-17
b(es)361 b(the)g(follo)-28 b(wing)361 b(writes)e(for)h(each)h
(transaction:)511 b(data)0 38566 y(blocks,)275 b FL(D)p
FM(,)e(to)h(in-place)g(locations)g(on)g(disk;)h(metadata)g(blocks)0
39894 y(to)265 b(the)g(journal,)i FL(J)6885 40060 y FD(M)7657
39894 y FM(;)h(a)d(commit)g(block)h(to)f(the)g(journal,)j
FL(J)22205 40064 y FD(C)22825 39894 y FM(;)h(and)0 41223
y(\002nally)-72 b(,)434 b(a)402 b(checkpoint)i(of)e(the)g(metadata)h
(to)f(its)e(in-place)j(lo-)0 42551 y(cation,)c FL(M)44
b FM(.)635 b(W)-89 b(e)374 b(refer)g(to)g(writes)f(belonging)k(to)d(a)g
(particular)0 43879 y(transaction)336 b FL(i)e FM(with)h(the)h
(notation)g(:)123 b FL(i)p FM(;)363 b(for)334 b(e)-17
b(xample,)352 b(the)335 b(jour)-22 b(-)0 45208 y(naled)278
b(metadata)h(of)e(transaction)h FL(i)e FM(is)h(denoted)i
FL(J)19124 45374 y FD(M)19895 45208 y FM(:)123 b FL(i)p
FM(.)1107 46649 y(Ordered)430 b(journaling)g(mode)g(ensures)f(se)-28
b(v)-17 b(eral)431 b(properties.)0 47977 y(First,)307
b(metadata)c(written)f(in)g(transaction)h FL(T)141 b(x)s
FM(:)123 b FL(i)163 b Fn(+)g FM(1)301 b(cannot)j(be)0
49305 y(observ)-17 b(ed)394 b(unless)d(metadata)i(from)e(transaction)h
FL(T)141 b(x)s FM(:)123 b FL(i)391 b FM(is)g(also)0 50634
y(observ)-17 b(ed.)338 b(Second,)263 b(it)255 b(is)h(not)g(possible)h
(for)e(metadata)j(to)e(point)0 51962 y(to)370 b(in)-44
b(v)-28 b(alid)372 b(data.)624 b(These)371 b(properties)g(are)g
(maintained)h(by)f(the)0 53291 y(reco)-17 b(v)g(ery)328
b(process)d(and)h(ho)-28 b(w)327 b(writes)d(are)h(ordered.)489
b(If)324 b(a)h(crash)0 54619 y(occurs)382 b(after)f(the)h(transaction)g
(is)f(properly)h(committed)h(\()p FL(i.e)-17 b(.)p FM(,)0
55947 y FL(D)p FM(,)402 b FL(J)1941 56113 y FD(M)2713
55947 y FM(,)g(and)379 b FL(J)5790 56117 y FD(C)6788
55947 y FM(are)f(all)f(durably)i(written\),)402 b(b)-22
b(ut)378 b(before)g FL(M)422 b FM(is)0 57276 y(written,)256
b(then)c(the)f(reco)-17 b(v)g(ery)254 b(process)d(can)h(replay)g(the)g
(transac-)0 58604 y(tion)235 b(so)g(that)g FL(M)279 b
FM(is)235 b(written)f(to)h(its)f(in-place)j(location.)330
b(If)234 b(a)h(crash)0 59932 y(occurs)309 b(before)f(the)h(transaction)
f(is)f(completed,)318 b(then)308 b(ordered)0 61261 y(journaling)420
b(ensures)f(that)f(no)i(in-place)f(metadata)i(related)e(to)0
62589 y(this)276 b(transaction)i(w)-11 b(as)277 b(updated.)1107
64030 y(Optimistic)210 b(journaling)j(allo)-28 b(ws)211
b(the)g(disk)g(to)g(perform)h(writes)0 65358 y(in)326
b(an)-17 b(y)327 b(order)f(it)g(chooses,)339 b(b)-22
b(ut)326 b(ensures)g(that)g(in)g(the)g(case)h(of)f(a)0
66687 y(crash,)226 b(the)213 b(necessary)i(consistenc)-17
b(y)215 b(properties)e(are)g(upheld)i(for)0 68015 y(ordered)372
b(transactions.)624 b(T)-89 b(o)371 b(gi)-28 b(v)-17
b(e)372 b(the)f(reader)h(some)e(intuition)0 69343 y(for)432
b(wh)-6 b(y)434 b(particular)f(properties)f(are)h(suf)-28
b(\002cient)434 b(for)d(ordered)0 70672 y(journaling)423
b(semantics,)458 b(we)421 b(w)-11 b(alk)422 b(through)h(the)f(e)-17
b(xample)424 b(in)0 72000 y(Figure)3171 72015 y
SDict begin H.S end
3171
72015 a -15 x FM(6)3724 71245 y
SDict begin H.R end
3724 71245 a 3724 72000
a
SDict begin [/Color [1 0 0]/H /I/Border [0 0 1]BorderArrayPatch/Subtype
/Link/Dest (figure.6) cvn H.B /ANN pdfmark end
3724 72000 a FM(.)354 b(F)-17 b(or)281 b(simplicity)-72
b(,)281 b(we)g(be)-17 b(gin)282 b(by)g(assuming)f(that)g(data)27100
10170 y @beginspecial 0 @llx 0 @lly 562 @urx 238 @ury
2232 @rwi @setspecial
%%BeginDocument: Figs/optimistic-4.eps
%!PS-Adobe-3.0 EPSF-3.0
%%HiResBoundingBox: 0.000000 0.000000 562.000000 238.000000
%APL_DSC_Encoding: UTF8
%APLProducer: (Version 10.6.8 (Build 10K549) Quartz PS Context)
%%Title: (Unknown)
%%Creator: (Unknown)
%%CreationDate: (Unknown)
%%For: (Unknown)
%%DocumentData: Clean7Bit
%%LanguageLevel: 2
%%Pages: 1
%%BoundingBox: 0 0 562 238
%%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
/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
{ld}repeat pop
/SC{
/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
/cm {cmmtx astore CM concat}bd
/W{clip newpath}bd
/W*{eoclip newpath}bd
statusdict begin product end dup (HP) anchorsearch{
pop pop pop
true
}{
pop
(hp) anchorsearch{
pop pop true
}{
pop false
}ifelse
}ifelse
{
{
{
pop pop
(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
/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
}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
dict begin
{def} repeat
pop
/ImageType 1 def
/ImageMatrix[Width 0 0 Height neg 0 Height]def
currentdict dup/ImageMask known{ImageMask}{F}ifelse exch
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
}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{
exch t_array t_i get add exch moveto
/t_i t_i 1 add store
}bd
/y_proc{
t_array t_i get add moveto
/t_i t_i 1 add store
}bd
/xy_proc{
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
/cp_proc/x_proc ld
/base_charpath
{
/t_array xs
/t_i 0 def
{
t_c 0 3 -1 roll put
currentpoint
t_c cply sop
cp_proc
}forall
/t_array 0 def
}bd
/sop/stroke ld
/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{
findfont dup length dict copy dup
/Encoding 4 -1 roll put
definefont pop
}bd
/renmfont{
findfont dup length dict copy definefont pop
}bd
L3? dup dup{save exch}if
/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
{
begin
/nRange Range length 2 idiv store
/mulRange
[
0 1 nRange 1 sub
{
2 mul/nDim2 xd
Range nDim2 get
Range nDim2 1 add get
1 index sub
255 div
exch
}for
]store
end
}bd
/FunEval
{
begin
nRange mul /val xd
0 1 nRange 1 sub
{
dup 2 mul/nDim2 xd
val
add DataSource exch get
mulRange nDim2 get mul
mulRange nDim2 1 add get
add
}for
end
}bd
/max
{
2 copy lt
{exch pop}{pop}ifelse
}bd
/sh2
{
/Coords load aload pop
3 index 3 index translate
3 -1 roll sub
3 1 roll exch
sub
2 copy
dup mul exch dup mul add sqrt
dup
scale
atan
rotate
/Function load setupFunEval
clippath {pathbbox}stopped {0 0 0 0}if newpath
/ymax xs
/xmax xs
/ymin xs
/xmin xs
currentdict/Extend known
{
/Extend load 0 get
{
0/Function load FunEval sc
xmin ymin xmin abs ymax ymin sub rectfill
}if
}if
/Nsteps/Function load/Size get 0 get 1 sub store
/dx 1 Nsteps div store
gsave
/di ymax ymin sub store
/Function load
0 1 Nsteps
{
1 index FunEval sc
0 ymin dx di rectfill
dx 0 translate
}for
pop
grestore
currentdict/Extend known
{
/Extend load 1 get
{
Nsteps/Function load FunEval sc
1 ymin xmax 1 sub abs ymax ymin sub rectfill
}if
}if
}bd
/shp
{
4 copy
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
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
{
xmin dup mul ymin dup mul add sqrt
xmax dup mul ymin dup mul add sqrt
xmin dup mul ymax dup mul add sqrt
xmax dup mul ymax dup mul add sqrt
max max max
}bd
/sh3
{
/Coords load aload pop
5 index 5 index translate
3 -1 roll 6 -1 roll sub
3 -1 roll 5 -1 roll sub
2 copy dup mul exch dup mul add sqrt
/dx xs
2 copy 0 ne exch 0 ne or
{
exch atan rotate
}{
pop pop
}ifelse
/r2 xs
/r1 xs
/Function load
dup/Size get 0 get 1 sub
/Nsteps xs
setupFunEval
dx r2 add r1 lt{
0
}{
dx r1 add r2 le
{
1
}{
r1 r2 eq
{
2
}{
3
}ifelse
}ifelse
}ifelse
/sh3tp xs
clippath {pathbbox}stopped {0 0 0 0}if
newpath
/ymax xs
/xmax xs
/ymin xs
/xmin xs
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
{
0/Function load FunEval sc
{
{
dx 0 r1 360 0 arcn
xmin ymin moveto
xmax ymin lineto
xmax ymax lineto
xmin ymax lineto
xmin ymin lineto
eofill
}
{
r1 0 gt{0 0 r1 0 360 arc fill}if
}
{
0 r1 xmin abs r1 add neg r1 shp
}
{
r2 r1 gt{
0 r1
r1 neg r2 r1 sub div dx mul
0
shp
}{
0 r1 calcmaxs
dup
r2 add dx mul dx r1 r2 sub sub div
neg
exch 1 index
abs exch sub
shp
}ifelse
}
}sh3tp get exec
}if
}if
/d0 0 store
/r0 r1 store
/di dx Nsteps div store
/ri r2 r1 sub Nsteps div store
/Function load
0 1 Nsteps
{
1 index FunEval sc
d0 di add r0 ri add d0 r0 shp
{
d0 0 r0 a1 a0 arc
d0 di add 0 r0 ri add a0 a1 arcn
fill
d0 0 r0 a0 a1 arc
d0 di add 0 r0 ri add a1 a0 arcn
fill
}pop
/d0 d0 di add store
/r0 r0 ri add store
}for
pop
currentdict/Extend known
{
/Extend load 1 get r2 0 gt and
{
Nsteps/Function load FunEval sc
{
{
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
}
{
xmax abs r1 add r1 dx r1 shp
}
{
r2 r1 gt{
calcmaxs dup
r1 add dx mul dx r2 r1 sub sub div
exch 1 index
exch sub
dx r2
shp
}{
r1 neg r2 r1 sub div dx mul
0
dx
r2
shp
}ifelse
}
}
sh3tp get exec
}if
}if
}bd
/sh
{
begin
/ShadingType load dup dup 2 eq exch 3 eq or
{
gsave
newpath
/ColorSpace load scs
currentdict/BBox known
{
/BBox load aload pop
2 index sub
3 index
3 -1 roll exch sub
exch rectclip
}if
2 eq
{sh2}{sh3}ifelse
grestore
}{
pop
(DEBUG: shading type unimplemented\n)print flush
}ifelse
end
}bd
{restore}if not dup{save exch}if
L3?{
/sh/shfill ld
/csq/clipsave ld
/csQ/cliprestore ld
}if
{restore}if
end
setpacking
%%EndFile
%%EndProlog
%%BeginSetup
%%EndSetup
%%Page: 1 1
%%PageBoundingBox: 0 0 562 238
%%BeginPageSetup
cg_md begin
bp
sdmtx
%RBIBeginFontSubset: Helvetica-Bold
%!FontType1-1.0: Helvetica-Bold 1.0000.1.0000
14 dict begin/FontName /Helvetica-Bold def
/PaintType 0 def
/Encoding 256 array 0 1 255{1 index exch/.notdef put}for
dup 33 /O put
dup 34 /n put
dup 35 /hyphen put
dup 36 /D put
dup 37 /i put
dup 38 /s put
dup 39 /k put
dup 40 /space put
dup 41 /J put
dup 42 /o put
dup 43 /u put
dup 44 /r put
dup 45 /a put
dup 46 /l put
dup 47 /I put
dup 48 /P put
dup 49 /c put
dup 50 /e put
dup 51 /C put
dup 52 /h put
dup 53 /p put
dup 54 /t put
dup 55 /M put
dup 56 /m put
dup 57 /y put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[2048 -2084 1 index div -985 2 index div 2942 3 index div 2374 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C000003866670676D000000000000042400000A24676C79660000000000000E480000125C6865616400000000000020A4000000366868656100000000000020DC00000024686D74780000000000002100000000686C6F63610000000000002168000000366D61787000000000000021A0000000207072657000000000000021C0000003CF05C0001105C2002D0597001D0442001D0000FFDA0000FFDB0000FFDAFE53FFEF05D0000AFFFDFFED03340000012200000122DFFB011400AF000700B7007E000400D200AA0109002300ED013200D9011D012A00D800FE00DB00E2001A008B00A0001A004500E801F6000900E90128013200360082009E009FFF700070003F003F00E801050015003800E9FF7BFFC8FFF90042008A00C401070113011DFFB9002F00870087009A009C010C0262FFB10018004C00770080008200C900DAFFB2FFEA001A003600E50111012F043BFFDD00020005001A0039008900AA00B701210123012A015BFFE5000200180023005C00AAFF4DFF76FFB2FFEF001A002F004E007B008A00E1011F0126012B019A01DE03EDFF80FF8E0007001C004E005500630063006D00810098009C00AD011F01260162041C051500390044004B0063008E00CC00E800F2010001290142017802D503EA03F0043B049AFFC400050055005C0060009F0103011D012401550164017001AD01B401C301F602370261033903D5047004A100020055008800A100BD00C700D300DD00EB00ED00FA00FD0104012B013E014F017B019D01AD01E20233025D027D028C02DA02EF033103DE0407048B058505BBFF04FFD5FFFA0007001E002A003B004700510058006500650066006E0075007F00840107009700B100C300CC00DF00DF010A0110012F013101470154015B016B0179009101A401BA01DC01E401E601E901F60213021F0223022F0276027D0282028902AD02B202B902ED03110374037D03C003DE03F60415045D04C004C004DF052D0574061C064B0751FE94FEDFFF2DFF90FF9AFFEA0016001600240029002D003E0104006D006D008400870089008E009C00A400AB00AE00B200B2FFFB013900C400D100DF00E100EF00F70121011C011C012101320138015001510154016C016D017F019801A401AA01B601BA01BB01BB00D701D701FB01FB01FE00190209022D025B026102790279029A009802D302DA02EF030C03210328032D034B0353FFF103AD03B103F20425045A0471047B048A0498049F051C053D0557055A0570059505B605CB05D605EF05F4061D068706A406B406D307080734079807FE012201320120012500B400BE0082009603700132012400430184011D015600CC010500ED00C500FB00F900C000A7011D00FE035500880026FFA100B8FF8800DD00BD00B5
037C003C00910293024AFF3F03A803090132FFF700820030002A002A002A002A002A0000402A292827262524232221201F1E1D1C1B1A191817161514131211100F0E0D0C0B0A090807060504030201002C4523466020B02660B004262348482D2C452346236120B02661B004262348482D2C45234660B0206120B04660B004262348482D2C4523462361B0206020B02661B02061B004262348482D2C45234660B0406120B06660B004262348482D2C4523462361B0406020B02661B04061B004262348482D2C0110203C003C2D2C20452320B0CD442320B8015A51582320B08D44235920B0ED51582320B04D44235920B09051582320B00D44235921212D2C20204518684420B001602045B04676688A4560442D2C01B9400000000A2D2C00B9000040000B2D2C2045B00043617D6818B0004360442D2C45B01A234445B01923442D2C2045B00325456164B050515845441B2121592D2CB00143632362B0002342B00F2B2D2C2045B0004360442D2C20B0032552582359212D2C69B04061B0008B0C6423648BB8400062600C642364615C58B0036159B002602D2C45B0112BB0172344B0177AE5182D2C45B0112BB01723442D2C45B0112BB017458CB0172344B0177AE5182D2CB002254661658A46B040608B482D2CB0022546608A46B040618C482D2C4B53205C58B002855958B00185592D2C20B0032545B019234445B01A23444565234520B00325606A20B009234223688A6A606120B0005058B21A401A4523604459B0005258B219401945236044592D2CB9187E3B210B2D2CB92D412D410B2D2CB93B21187E0B2D2CB93B21E7830B2D2CB92D41D2C00B2D2CB9187EC4E00B2D2C4B525845441B2121592D2C0120B003252349B04060B0206320B000525823B002253823B002256538008A63381B212121212159012D2C456920B00943B0022660B00325B005254961B0805358B21940194523616844B21A401A4523606A44B209191A45652345604259B00943608A103A2D2C01B005251023208AF500B0016023EDEC2D2C01B005251023208AF500B0016123EDEC2D2C01B0062510F500EDEC2D2C20B001600110203C003C2D2C20B001610110203C003C2D2C764520B003254523616818236860442D2C7645B00325452361682318456860442D2C7645B0032545616823452361442DB8002A2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8002B2C2020456944B001602DB8002C2CB8002B2A212DB8002D2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8002E2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8002F2C4B20B0032650585158B08044
1BB04044591B21212045B0C05058B0C0441B2159592DB800302C2020456944B001602020457D691844B001602DB800312CB800302A2DB800322C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800332C4B535845441B2121592DB800342C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800352C2020456944B001602DB800362CB800352A212DB800372C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800382C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800392C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8003A2C2020456944B001602020457D691844B001602DB8003B2CB8003A2A2DB8003C2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8003D2C4B535845441B2121592DB8003E2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8003F2C2020456944B001602DB800402CB8003F2A212DB800412C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800422C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800432C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800442C2020456944B001602020457D691844B001602DB800452CB800442A2DB800462C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800472C4B535845441B2121592DB800482C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800492C2020456944B001602DB8004A2CB800492A212DB8004B2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8004C2C2046B00425465258238A59
2046206A6164B0042546206A61645258238A592FFD2DB8004D2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8004E2C2020456944B001602020457D691844B001602DB8004F2CB8004E2A2DB800502C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800512C4B535845441B2121592DB800522C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800532C2020456944B001602DB800542CB800532A212DB800552C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800562C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800572C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800582C2020456944B001602020457D691844B001602DB800592CB800582A2DB8005A2C4B20B003265358B0401BB000598A8A20B0032653582321B0808A8A1B8A235920B0032653582321B800C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005B2C4B535845441B2121592D0002009A0000053D05C200030007003E402105061D02010004071D03000A05041D0303021A0906071D0100190809AA216C3C182B2B4EF43C4DFD3C4E10F63C4D10FD3C003F3CFD3C3F3CFD3C313033112111271121119A04A3B8FCCD05C2FA3EB80452FBAE0000000001002F01B4026D02C2000300214012002203011A05DF000100190405D5217D46182B2B4EE45D10E64D002FED3130132111212F023EFDC202C2FEF20002005CFFD7057B05EF001E001F00744029570A94079408035B02591B581D660477018905A914B204B70AC604C70BDA02DB14DD18DF1BF8181017B8010B40231A08081A0C411F030312411A091F16371708371F1E071A210F371E1920219921AD56182B2B4EF44DED4E10F64D1139EDD4ED2F003FED3F3CED12392F10ED3130015D005D12373621201716172126272623220215141633323736372106002120272611015CCFB401160174AC5F07FECC1E2F54A5A8C2CD9EA2552F1F013128FEB7FEFFFEC2B6B602900457D1B6F4898A6A3660FEF1F8F8F76A3972F1FED2CCCD0165031A0002009C0000057B05C2000900170053403277120107082707270C58126A127B048C038A048A12980398049812AD030D
022A15092A160215080637101A19012515191819B80120B3215256182B2B4EF44DFD4E10F64DED003F3FED10ED3130015D005D01112132373635342623361716171612151007022901112101C7011CDA562F8DD2BD5B9B604D3876A0FEB2FD85027B04C2FC3ED776A3E1F1FE1E33886EFF0074FEDACCFEED05C2000000020084000001B605DF00030004003040110402020108040617171A04002501190506BA014B00210135B179182B2B4EF44DFD394E456544E62F003F3F3C3130290111212701B6FECE01329905C21D000001002DFFDC03DE05C200130032401413130F090204410F0908370B1A15013612191415B80173B3217579182B2B4EF44DED4E10F64DED003FED3F12392F313001151E0133323736351121111407062120021135015004436E6D23150134416EFEE1FEE1C4022F22AB8B4C2D6B0407FBFEBC6EBA012D010422000000000100970000062805C2001200C04090090007080809051116081909290027082B0924112A12370735083C0938126A00651179007511890086119A009611A800A611C700F708F8091C05080A09160818090407121A071A0A1712220023112F123D073F0A3F127A12B909B612C7120E0F070F0A020A0F1211090800050E070203120A07030E1100020E0803081417171A0204032702120F0D0E270F19135279182B4E10F44DFD3C1910DCDC18FD3C104E456544E6003F3C3C3F3C121739011112391217391139313000715D01715D01211121113436350121011416151121112101046D01BBFEE102FEE9FED5FEEB02FEE101C0010C05C2FA3E03E52B9B2AFB2B04D52A9B2BFC1B05C2FB790000030065FFD705EA05EF000B001B001C00414027160C16121914191A971A0505411C17030B410F091C02371C131B1A1E083713191D1EDF21EB56182B2B4EF44DED4E10F64D1139ED2F003FED3F3CED3130005D241235340223220215141233240706212027261110373621201716110103DFD7D7B7B7DADAB702C2DFA7FEC4FEC4A7E0E0A7013C013CA7DFFD3EDC010EF9F8010FFEF2F9F9FEF27AD3ACACD3018D0195CBACACCBFE6B030C00000200A30000050B05C200080013003E401C97019706020C2A04040E032A0F020E080837131A15030D250E191415B8011DB3215256182B2B4EF44DFD3C4E10F64DED003F3FED12392FED3130015D002623211121323635000423211121112132041503DA796DFEE1011F6D790131FEF8F5FEC7FECE0282DE0108046062FE4E6A73FEFDD8FDEE05C2E4EF00000003003BFFDE0438045F000E0039003A008F404F3B0235367901890104D81E0126F3E62AE7230E0D05020005131A2B24232204262E262E2A0D050200041B0B221B162C3A1F072A0A0B2C320B3A134D004D2E3A352A3E261A3C1A4D1B2D084D35193B3CBC01190021004801AE00182B2B4EF44DED
F4ED4E10F64DE41139CDE5E52F003FED3F3F3CFDCD39111217391239390111121739111217392B3130015D005D010E010F01060706151416333236372736373635342623220706072136373621321716151114171E011715212E012706070623222635343736371302DE1B3730405A2742513A5C9B03AD4F223D5D5A652A1E0AFEED0947710113B38B8B02031C1CFECA0D0A033B4D5C7494C19B55A57002121115090C1017275249416C8FEF0A0F1A37433332253F8F5C904747C5FE0C344A38280D2A213A25402D35A99BC95A311501D400000000020047FFDA0434045F001D001E006E40459916A81602871C01491558126812780A7912B815C713C81508180206041DD204241E1A07160E0A0C10B70C24140B1E10360F1F00361E171D1A20083617191F208721484E182B2B4EF44DED4E10F64D1139FDF4ED2F003FEDED113939393F3CEDED113939393130015D71005D0126272623220706151417163332363721060706212002351000333204170103100821306590351C1C338D64540901230A5486FEF9FEF9F80112F1CD010518FE1B02BB3D31428F4C7E7849886C568274BB0138F901190138B8E901A400000003002FFFDC043A045F00060021002200AB4049460887149701990A04060109050610051A4B05461049208601850F871F0A031603171316131748084C164C17491A5C165C175A1ADC01DB04E91DE720F720104A014610880583100402B8019540334F0E5F0E6F0E030E0E1B062422210717122C1B0B160302220336177B221E600C800C020C1A24021F0E951E1923249821484E182B2B4EF44DFDE44E10F65D4D1139E4ED2F111239003FEDCD3F3CED12392F5DFD313000715D01715D000607212E012336161716171607211617163332373637210607062322001110003B0101D06D0E01BB077B5B88DA4740130B02FD1606613B5358371E1701230B5A8CFCD0FEC2011FE51403747C6A7175EB666E61804B8DA44229321B3061649F010C012E011B012E000000000100870000045E05BD0017003F402505022702580E680E04141712000C24170710070A0836051A1913102711191819BE215045182B2B4EF44DFD3C4E10F64DED003F3C3FED3F11393130015D0016171E01151121113427262322061511211121113E01330343A5352D14FEDD1E276D7175FEE4011C3EA35A045E46483D8192FD80029758364C978CFDB205BDFDF75F4B00000000020089000001AA05CB00030007003B40224C004C015C005C010401B102000406070A0917171A0006270107190809B2215045182B2B4EF43C4DFD3C4E456544E6003F3F3F4DED3130005D012111210121112101AAFEDF0121FEDF0121FEDF04C40107FE77FBBE00000100820000046D05BD000B00F040B240024605D402E502040F080A09550589058F088E09C505CA08D907DF
08DC090B080618062F032F0428052D06370338064C0348065D0359066A0369067804880497039507A903AF04AA06A807B603B804C603C9041A4B064A07560588048308C405C808D903D904DD07DA080B050909040505060B0B040802070904050706050A02200303CB1204040909040302040602090A0403060A070A0000061A0D010A27000B200B300B400B040B190C0D872150E3182B2B4EFC5D4DFD3C4E10EE003F3F3C3F3C12393901111739874D2E2B047D104B51587A59C4001239011139390F8710083C07103C313001715D00715D13211101210901210107112182011801630161FE83018CFEA8FEFB76FEE805BDFCE6019AFE5FFD6401D27BFEA9000001008B000001A805C20003002540130200010A0517171A002701190405B2215045182B2B4EF44DFD4E456544E6003F3F31302901112101A8FEE3011D05C200000100800000069C045A002D00C2414D0037000200010006000200160002002500020069000F006A001A0079000F007A001A0089000F008A001A0099000F0099001A00A9001A00B9001A00E7000B000E0002002100290003001F000D0024002D00180024002D00250007001F0006001D00120008000A002F00170017001A000600360009010F00290011004D0014010F001E0020001D0027001E0019002E002F012300210050004500182B2B4EF44DFDC410F4ED39F4FD4E456544E6003F3C3C3F3F3C4DED10ED1117393130015D005D00161716171615032111342726232207061511211134272623220706151121112115363736333217161736373633058F8C392E100A02FEDC142666762D17FEE11424697A2A17FEDF0115352F53847D4D3E203853586C045A38463953376AFD5102B63E284C623449FD770289612C4F4F2D59FD7004409F552440373350602D2D0002008700000461045F00160017004B402D0501150125013701580B680B060112100609241716070E040A170536170F021A19110E270F191819BE215045182B2B4EF44DFDC44E10F64D1139ED2F003F3C3F3CED3F39393130015D001615112111342726232207061511211121153637363327038AD7FEDC172A7691361CFEE401133731588769045CB1CDFD220297562E547B4165FDB204409F54254203000000030042FFDA049C0465000B00170018004D4028170301080C880C881003170D180F660D0305241814070B240E0B1818080236171A1A08361119191AB80176B321484E182B2B4EF44DED4E10F64DED11392F003FED3F3CED313001720072712436353426232206151416332400212000353400212000150102EB86867D7D87877D022EFEECFEE7FEE7FEEC0114011901190114FDD3C9B2A4A4B1B1A4A4B266FEAB0155F0EC015AFEA6EC02400002007DFE53049A045A000D0020004A40291713080A1C1A022420071A060A24130B190E
080D180D36101A22061F1B1F1827191921229821504E182B2B4EF44DFDF4E44E10F64DED111239003F3FED3F3FED1139113912393130002623220706151417163332363512001110002322272627112111211536373633037473819B3A1E653C52777D1D0109FEFDCC82562F2DFEE601112E345F83029FC2934E78BE4D2DB8990239FEE6FEEFFEE0FED2412445FDC805EFA147294900000000010082000002FB045C0013004AB900030147B3020F0D06B80147401913070D060C0A200230024002031517171A020E0B270C191415B80164B3215066182B2B4EF44DFDC4D44E456544E64D5D003F3F3FED1139D4ED3130001617112E01232207061511211121153637363302DD0B131B2A0DAC3B21FEE1011042315080045C0101FEDC0302703F83FDF70442BE6D284300000000020042FFDB04250461002B002C007E404F09100626190D030904210B0B4B0A490B472144204829D703081D22200C0A04162B04161A2C2C1207042C280B2C2C0F150A201D164D2207152D074D251A2E0C001D4D0F2D004D2B192D2E8721484E182B2B4EF44DEDF4ED12394E10F64DEDF41139ED1139391112392F003FED3F3CFDCD10CD11173931305E5D5E015D0116171633323635342726252627263534363332041721262726232206151417161716171615140623202635010163091E358F54632828FEFFB94C4CEDD7CC010113FEE306192F715D4F2A2AFFAA5554F1FCFEFFF501FB015C4C203932323019193D2E45448097D9A3C837203A3A27311617382851527BA2CDD9A803030000010015FFEA027805680016004AB6102C0F1F0C2C11BA01710004015C401607005C0601061817171A0F06F4040927009203151718B8010EB3216066182B2BD43CE4FD3CF43C4E456544EE4D003F3CFD3CED3FFDF4E4313013353311211133152311141633323637150706272635111598011AB1B122570D1D0E87CA4A30036DCB0130FED0CBFDC043210101D505074D3166029F0002007DFFE80455045F0019001A004C402E0A161A162A16381656076507061A070A0006160E0D0A0524140B1A0D0A271A180B1A1C013618191B1CBE215045182B2B4EF44DED4E10F612394DFDD42F003FED3F39393F3C3F3130015D0111141716333237363511211121350E01070E012322272635112501A116277292361C0121FEEB042016437D54F2542F01EC0442FD6F5D2F537640690251FBBE9A0532133C2CAE60BB02911D00020015FE470450045F0013001400D94070270A560A660A950AA40AD30A06050A0106061C07110D2D07200D3D07310D4B075D07580B680B7707790D0D170F360D8709880B980BB80B0614140C080D02200C0C27120B0B0A0607021F0808271209090A0607020D0A150C0B0908060709001F022C131F100F14071617171A0E0D0B0CB8010CB30607090AB801
0C400C13920819651516A9216066182B2B764EF44DE418FC393939FC393939194E456544E618003F3F4DE4FDE43F3F3C3C3C12393911123901872E2B057D104B52787AC533872E182B7D104B52787AC5011112392F3130015D7100715D1F011636373E012701211B01210102062322262701B1242A4C1A192B04FE70013DEEE1012FFE8A6C7EBD262E2E0182D102020A12116C0C0472FCDC0324FBD0FECA9501030614000001000000010000412D55A05F0F3CF50011080000000000A2272E8000000000C621BCF9F7DCFC270B7E0946000100090001000000000000000100000629FE2900000C01F7DCFCDB0B7E00010000000000000000000000000000001A05C7009A0239000002AA002F05C7005C05C7009C023900840473002D06AA009706390065055600A30473003B047300470473002F04E3008702390089047300820239008B071D008004E3008704E3004204E3007D031D00820473004202AA001504E3007D04730015000000340034005200C4011A014201800206025C02A2034603B40448049204C6055C057C0624067406CA0728077207F808420896092E000000010000001A006A0009006C0008000200100010005C000007E80A2400040001B800522BB800482BB8003E2BB800342BB8002A2BB10840BA019000145DF44009011F04000B1FD819EEBE012E000D00E6012E000D00B0012E400C0D000963833C1F63838348294109014B00370401001F014500240401001F0144B224AB1FB8013EB224231FB8013DB224231FB80102B2371D1FB80100400937241FFD37621FFC37B80801401B1FF824931FF724931FF6243F1FF524311FD1371D1FD037471FCD41B80801B21FCB2AB80201B21FCA24B80401400F1FC824811FB537291FB4373B1FB227B80401B21FB141B80401B61FA437811FA384B80401B21FA22AB80401B21FA124B8019AB21FA024B8019AB61F9F243F1F9683B80401B21F9527B80401B21F8227B80401B21F7084B80801B21F6FB3B80801B21F6EB3B802ABB61F6D24261F6224B80101400B1F5D246C1F5C24391F5441B80125B21F4D27B80401B61F4C27CD1F4B41B80401B21F4024B8019AB21F3683B80401B21F3524B80201B21F3224B8019AB61F2C24BB1F2884B80801B21F2241B8040140131F20244C1F1D24261F2CA0961F2C245E1F412AB801A8B748282A2448279636B801F4B21F4D27B801F4B21F9527B801F4B21F6E27B801F4B21F6327BD01A700470029015A00250199B348296FB3B80190B21F83B3B8019AB348283725B803E840121FB327482784274827362748272527482755B80154402C0797076407550733072B072907260721071E071B071408120810080E080C080A080808060804080208000814B8FFE0402B00000100140610000001000604000001000410000001001002000001000200
000001000002010802004A00B806008516763F183F123E113946443E113946443E113946443E113946443E11394660443E11394660442B2B2B2B2B2B2B2B2B2B2B182B2B2B2B2B2B2B2B2B2B2B18011DB0964B5358B0AA1D59B0324B5358B0FF1D592B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B65422B2B2B4B5279B35279EB56456523456023456560234560B08B766818B080622020B1EB794565234520B003266062636820B003266165B079236544B0EB234420B152564565234520B003266062636820B003266165B056236544B0522344B10056455458B156406544B25240524523614459B35045484E456523456023456560234560B089766818B080622020B148454565234520B003266062636820B003266165B045236544B048234420B1504E4565234520B003266062636820B003266165B04E236544B0502344B1004E455458B14E406544B250405045236144592B2B4569534200
00>] def
/CharStrings 26 dict dup begin
/.notdef 0 def
/space 1 def
/hyphen 2 def
/C 3 def
/D 4 def
/I 5 def
/J 6 def
/M 7 def
/O 8 def
/P 9 def
/a 10 def
/c 11 def
/e 12 def
/h 13 def
/i 14 def
/k 15 def
/l 16 def
/m 17 def
/n 18 def
/o 19 def
/p 20 def
/r 21 def
/s 22 def
/t 23 def
/u 24 def
/y 25 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def
/FontBBox{-2084 -985 2942 2374}def
/UniqueID 4349600 def
currentdict currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C9264C9384F249EBFD8DD5BFBB9BE844B0E83BCFE532E688793A86D21BD3783B6466745703438F6F9D99487AF3A83EDE916E16C01CC24124B2A0C95B81BA2D62CA57278BF5F1E4603A43A63265F4D8000ABFEAF4F2412FF1ABBCB5382B2419F85F4A0514B51A8888195EB81CEEE5218BE1154CDDC9C661C3E83801B54FFBF7554EA898F62DE0900A025763606710305339DBD971832A7D5F567FD4BACDC0D05813D3C8FED24BDB8485E512368449C716B64F6A0F872191F4D03EAD3B205C9302846F45D451CB798A7BA6212C84C95ADAC8E60D57325FAE77D473FBC03DE9702F8704B93B65957B5F254FB024E6981D773F8D39D7B3246589B8302F2654C7E7630E7CE14846485B3E6DCE2C54CD067F7DA6462F2CA060C6B5167DFD543BEC9B79543F64346E02396F59B54C3E4854B13C4A1CC6B6484F9F477ABDD9CEFB79240DFEE6A55C2D209E5AE7D0A5AE622D277423185CC93FD6E4EC968497B17D372CF5237F14B8EA4AF8F093F04CB7E9CA2020B1A8D5F25C4939647824F0FD67D4DA8EBAA34E8FF477A6DD7581E745DC9457BD4BE3F31456F4653152905C71639FD802A636C1A6D19F81881AAC7796F850C753B1B44352163DC1B5358D9999143AAE9436848FEECBE3CD1E05B1918EA3E8771E28A76C6E2B6740BA38549E9A1F45FC632E1CB43FF1DE1D680DEC3FBC0789A9DC4EC99ED38469C7318CBE53BFF053E8EE7692F6A28531FAE9D66C2FDD312BEF70A53181C247C5A2E48990C51603CBACB020B
ABB4EF9A4D1FB0B90A45112E117722CC77AA218F69071FEEC3E35DA645BA43F601584F229295E32D3EF55A8D3D681EBC3D72A333A714AADB159A985FE5962529DC7D313F7CFB999E638B5417FEB43EDFA289E6E6BD0F4F4667B4CFDF7E2CF16A3C36A4AF3CBB47E8DCED5662F01BE801CB4F6A79E6F2BFADD42CF0B00F5247A228DB758C874F4BD4042E3A04DC4718AC49B5AB0AA30895AA51012B9FADA9FFEBB268AE3801BBD309183775ECCB05EB6446B508614C28B85696B6190C6E341C48CAFC70C8CF79199150800669B777302CA5B4EEF9ECD65A3A8F58B335A5D9ED17CD325DC72EFCC202E5B8DC564FC5CBB178B660C8592EBAC3B7F38F6B3970DDBBB6C3FB64D1B4E2E9E923C542AE3516D769BE9A23B2C9AA1C08FE259EBFE513F0024004A9E15CC64595261A47237C64632E85AA65DAC94365F7B978B8E02C0BBD30805C6A34478A684BAD8BC842161DE87439E0180499F93BA6219B298D614806641DA3BB0DC68ECB169FAA0CD37719043D461D460247766D1B536793C0F0FE0E4B7E68431AAEA5A9B1BAB0ACE1AB6382DB9F68F7F86400985829396912E5F59825D4D4BCA57D207E46CB2D2353CEDA49EA50C6D6AD48A6A2585B3516722075E16EBD1B249D8CE8A687D64486E54BF737D3B3722A682ACC7118072129BBADA2ED4995C781816CC731441F5219372CDD8D46F3BD1071D0F27D8B1FB8D7C022246108DEA0E93B4271BFFE488C0E0AC4E3AEB5C66E77E4D5ECD71E9593BBBB1E079C77AD2785B18DCD0A0875912C304F421A212425C2AA7FD7822E9759C9999ED875FD59642557410DA735BA75F4D722DDD34A65B16FC8A151D600CD8B12D2C3803AE30DC12AC0EBD7DD60C1249018760CBD2414D187ACB10AB7D4AEB5A21A9190064B905774FC14E9B4E4788A90B35058046940094B58B8907108EF307712C7DC4496F515A2AE12DE770B5B65F7632431F636B88ADBDD88BBB3BC7142B504E1DC394B2E544100F142A4CC575C1DAACFC9FF69FF4D8DF643BF105A3A02A52FEE922FBB5E2253265C229F3257335E877B3F04FFDA530CAC2DB79F59AE0AF2091EA780511B429DFD0168D6F7ECB6AA76365D0FB8642FA829B826E57610CCA899162682F9FC73B29DAB62E82651FA0B0421F4A91C1FAF487057954D07107E75C2130467BE6A8DE04AFFC0EC25199C96E5EE623143CF16F6C39018126AC1A52BE205E144E04290DBA18B94A9778CF1EDA2048D74429580F73A21BA47586DA4FC32BADF9D14A6DD2AB09651F6A7C2D5FD6D7A8E9DBDF334784EA1DF49DFB7B3058CD4619D9A9906B5732BD353C3115CDB0A3F2796ADBF96828C3DCFCE27C284CDCA0ACB4FC50026FD67FE36E46CF5967D8B444DD4F110A80F3663E285F674C038EDF9BC6967FE84642DB5C7497163A7CDFECA909884A8584C775E9EBD9C5AE64E2C736697
A6663BE1A1A101391FCE2401EA2C7B6BB3CA89600E77B1948A67DCD602D15F4DDFCC244642868CE91913FFFA8EC282D5F01CD73B8FC0EB9BC586FDEE76B05844EBB5E40BF1E1682AE1735736B7CA345764C4FC5057779D2E08ACF24361AE1CCD634AFC0B44C7EFA706C39A78C6E09EC988F24C7CF5E52525074DB9C1A6E75557FAE853B7815A9996C97CD5239309CCBE5958AA7799CF7E2FBAD80606951DB735CD308E3D6C277F140F9273252985D2A1ECF578EF03AA3C13CDCE69867DC152DB56CD42CCBABABE2DA2F08D638595055D622520DF7F88F73FD1ABD8AC12501BAD0784195BEC755DE4816E867FACC5A036C4A8D25BF6B88BB34B51A124D74E1119D9782899F02D84D34C744568593888112DF47A32A55A6564B3CBE8FB811EA3C8B49E8792194BD538C9EAC19C52A3D86A210BFE7B8A1875301D83908F1D5E306CE2D10DEB432EDEAA5F2EE102088C389FDA5AF774AC349C2FC1624725F7D51B71342CBF946DD9BBC3B47D2FB57E0B66BAEFA3C02056C311E8BD8053689B91033A34DB50E3D110326F333F761E86F93C5C83838A9A36F2E233D2C1408A66E2D97CE325DFDC1E6DCA25C4EB2BC5CD52864B283C34BAA67B5E0A4674B0F539BD1DC76518FC8AA5510F376D08C0692AD886DF985DFB540C974C1248CEDC2908976E74E5FCE90B55BB67154FD3AB0812437BDEE3162A30BEC36E3938EB6C43CA582908BCCF006CA67FAF0408AD23C457DE24AFB630DDD2A64BF442F980AB229A8AACDF4FB49292BD71091333A831160C57329AFA622FE5E0070AC5CB114EF9C93B4E490D64D0E2D3B9F2C8AAEFD4A27780C0DAEFE1416C3C91A00B887AD80A40BA051AE749661F73F22D7D854F91254DF4C18CA871D9A88A428AE85135143F24555DEE6D5BF071849137754E50D1A66C8D97B12AE6A98874D9E49B40F3B9CEF6586449A9F6CF826F6DBB55C288FF80150621BD1692EC5E4F5322D5CE4C9D7CA6C8532454C71835635E1F7B11874C73CAE76447F06887B083DD9A9DF4B93A170D4E706892298023DDB137731DBB013BC9811EEC141C8902750E3A3EAA96684704E9413A4E1B17EA88D67BF121E53ED7C074B9F90A27A0063205BF3C2F94C979B2990243623BCB422D7FD54DA5165CD068657F770573EE85DEFB3EF899C73C84EFCB4EA56502C827D40A0904CA15E07DF821CB4683D80D38D22D00A6EA4527F88EDA2B77DF52FEE79191D9089759ABCCDC4E2F6AFE8F909338E09627D17129CB7363603B502E05633A5264CE647556157D704DC15E0F0AB2728F59866BEF8AF935961EB78398BA5CAE2E2CA49DBD97876FC88F9B906D655FAA66BD2CDDA2045F26D022D11542359D952CC4B5C05365AABE31095634821BA20D0DE94264F03A3BFBB558BA40832065D723EFA56CF29BF5975C5CDB18EA1650D28119F6EC9B2F81E08E76BE
7ECF7A023311B53BCD53B91DFD08FE37598676DBAE0D9AD17005137869AEF5F908A6AEA3A58ED3184F2BA51E2EB3AD3D9D4CD473A42F526F1FA0748E05F03ECBB94E314A0EB32C77CDEA329A7312D6A39EB471B5BA7B666F9755D4D155C8170BF90B9A8EDEB0FBEBA2F97FECF8C718DC624F09553587DF6E9CF8A9C79F6D46090D7EBBAD3C5197BB03649439BE0CC9CFE66E4C381EA39E8E33C806A7BEC215CEBC557C5ED2A97CAD323898F57EEF281196A2086B518AD944A01B5D7E484584AFE3DF72E849BAF7374094441E4BB2A95BF4D96C72472900EA4B37A5E167CDA88C28D510BDB0518BDCDF22CF7CED67D723D336C2DA0DBDC632A4B6E1A15BFDDB54E5956D49760233DA753AE69C9B8DBC5B5BFB84F077C2FB4482AD32CD462E3C46499E7E8B736A0A7A4CDB72D4C2F1264282403AAEE257BA208A988EB24B4943E2288379E2181528799A18460296458FE7FB7840F44C6920B2DE7486496B45F81EDE5009824DF99427CF904CC7A2FEC176B201906F32985A5704230E777EA636E012366A8893958F3793C9469DA213FABF18A48EA6219F1664B4B2D855CDFC6548CEC6C6FA06C4DF222E5DF94401392F567944754A0B575084C3ABD6D9F9B8B1AB834E99F8A3D35E8811092B429AEC534DC03D6CD0EFAC93B768426B7B93B14672EB2A6C347306735CC7C4553F07BEF16347431405A3DF9F9CE2287873D9D1A3A1F78614BC04492317BC95A721417A8CC31765B5B7D244DC8B90C191B68802DD8D4F07D9413DCA5D2250D3C9C35BA9BA0C44AA69212C400200CA19F3800212717DF389B434296DC47D948135C1AD2C4E39A912E970DF45C23691A37EE0C5DF66B21687F97420DE53C3BD1E77C2C3E26126ABCCB43BF8D28BB91EDDE435079066BAD601D0826B679A5E398C36F5F3DF64EFC8DE5B57EDCAE8CD43EA7FAF492757347F409011EA3A670C231271C94D6BEADC773BEC589F07ED68D34F9889CF829F96C5A765E0671F7F3ABFF956D7D2747374CF3E6F64DE19B6480B1AB6DE59B42D9A5F90C99833600AD5FC6B5C9046F0C44D723B64F57204B0726B6608073E2449E2281BD4A3D0BC9A22415129EC6C568CC3CDD1A371DE0068A2871E0C321DCF2B58C00CD4F978AA07A835D995B9559B86721D22ED3835231476554FD304FBAF97D3
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark end
%APLT1End
%RBIEndFontSubset
/Helvetica-Bold cguidfix
/F1.1/Helvetica-Bold renmfont
%RBIBeginFontSubset: Helvetica
%!FontType1-1.0: Helvetica 1.0000.0.0000
14 dict begin/FontName /Helvetica def
/PaintType 0 def
/Encoding 256 array 0 1 255{1 index exch/.notdef put}for
dup 33 /J put
dup 34 /M put
dup 35 /colon put
dup 36 /zero put
dup 37 /c put
dup 38 /space put
dup 39 /C put
dup 40 /k put
dup 41 /parenleft put
dup 42 /D put
dup 43 /comma put
dup 44 /parenright put
dup 45 /one put
dup 46 /two put
dup 47 /three put
readonly def
42/FontType resourcestatus{pop pop false}{true}ifelse
%APLsfntBegin
{currentfile 0(%APLsfntEnd\n)/SubFileDecode filter flushfile}if
/FontType 42 def
/FontMatrix matrix def
/FontBBox[2048 -1947 1 index div -985 2 index div 2961 3 index div 2297 5 -1 roll div]cvx def
/sfnts [<
74727565000900000000000063767420000000000000009C0000036C6670676D000000000000040800000A1D676C79660000000000000E2800000B3468656164000000000000195C0000003668686561000000000000199400000024686D747800000000000019B8000000406C6F636100000000000019F8000000226D6178700000000000001A1C00000020707265700000000000001A3C000003CF05C0001005BD00280580001A042F001F0000FFD90000FFDA0000FFD9FE55FFE605C70010FE6DFFF1033B000000B9000000B902FE3F3C00C0008D009B00AF000600A800C00028005E009800C9016A00B9015C00B400D6011E002E0080000400B8004C00CC01FFFFD1006600A400AF007400C2009500B1000C0028006D0015004C008E0125FF7A000C0040004C00620084FFA200240038008600BD0039005E008E00EDFFA9FFB300400052005500AA00AB00C200CB012302B10413FFAEFFE4000800510074008400AA00D1FF4CFFAF0012002C004200500051008400BE012503DAFF680018003B0098009C009F00A100C100EC018201B4FF68FF76FFD0FFE100020018001C00530053007D01B401E103AF0486FF9CFFEAFFFE001F0028002A00520060009300A300AA00AF00AF00C001000145016B0174019301950240028202B404850517FEFD00060029004700470048006F008800B400B900C400F200F901EF02180310037403C5FF35FFF3000B004B004C0052005500650076007600870087008E00AB00BB0106013001430150017D0194019501D3022A025502580277027802E6034E035C037903D3047304B2058C0598060BFEF5FFBBFFC7FFD50017001D005B0072007E009C00C200D000F400FA01030106011C0125013B0142015E015E0180019B02B901A101B9025001C001D002AA01DF01E301EF01FB0205020C0215022B0274029302AB02C202CE03690395039903DF03F5043E050205A105E5062507DBFE62FE89FECEFF3BFFE1FFF800030008002100390042004E005F0061006F00700034007F008E00AD00AD00AF00BD00C400C500C900C900C900E3011C00ED00F800F901000112011A0132014D014D014E014F01660169019E01BA01BA01BE01E301EF01F602000200020902110217021C02530262026D028002D50280031B032A034A035A03AF03AF03C803D603FB03FB04050413041504470449008C046D049A049A04A604A804B204CF0539053E054E055605800589058C036305D105D6067E068E06B206EF06F00728074C076F078C00B400C900C000C10000000000000000000000000004012400AF0032006E0063014401620096014301A10161008A00740064018801EF01700028FF5D037E0347023000AA00BE007B0062009A007D0089035C00A1FFD803AA00D70093006C0000008000A70442001D0597001D00820030002A
002A002A002A002A40292A292827262524232221201F1E1D1C1B1A191817161514131211100D0C0B0A090807060504030201002C4523466020B02660B004262348482D2C452346236120B02661B004262348482D2C45234660B0206120B04660B004262348482D2C4523462361B0206020B02661B02061B004262348482D2C45234660B0406120B06660B004262348482D2C4523462361B0406020B02661B04061B004262348482D2C0110203C003C2D2C20452320B0CD442320B8015A51582320B08D44235920B0ED51582320B04D44235920B09051582320B00D44235921212D2C20204518684420B001602045B04676688A4560442D2C01B9400000000A2D2C00B9000040000B2D2C2045B00043617D6818B0004360442D2C45B01A234445B01923442D2C2045B00325456164B050515845441B2121592D2C20B0032552582359212D2C69B04061B0008B0C6423648BB8400062600C642364615C58B0036159B002602D2C45B0112BB0172344B0177AE5182D2C45B0112BB01723442D2C45B0112BB017458CB0172344B0177AE5182D2CB002254661658A46B040608B482D2CB0022546608A46B040618C482D2C4B53205C58B002855958B00185592D2C20B0032545B019236A4445B01A23444565234520B00325606A20B009234223688A6A606120B0005258B21A401A4523614459B0005058B219401945236144592D2CB9187E3B210B2D2CB92D412D410B2D2CB93B21187E0B2D2CB93B21E7830B2D2CB92D41D2C00B2D2CB9187EC4E00B2D2C4B525845441B2121592D2C0120B003252349B04060B0206320B000525823B002253823B002256538008A63381B212121212159012D2C456920B00943B0022660B00325B005254961B0805358B21940194523616844B21A401A4523606A44B209191A45652345604259B00943608A103A2D2C01B005251023208AF500B0016023EDEC2D2C01B005251023208AF500B0016123EDEC2D2C01B0062510F500EDEC2D2C20B001600110203C003C2D2C20B001610110203C003C2D2C764520B003254523616818236860442D2C7645B00325452361682318456860442D2C7645B0032545616823452361442D2C4569B014B0324B505821B0205961442DB8002B2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8002C2C2020456944B001602DB8002D2CB8002C2A212DB8002E2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8002F2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800302C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800312C2020456944B0016020
20457D691844B001602DB800322CB800312A2DB800332C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800342C4B535845441B2121592DB800352C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800362C2020456944B001602DB800372CB800362A212DB800382C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800392C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8003A2C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB8003B2C2020456944B001602020457D691844B001602DB8003C2CB8003B2A2DB8003D2C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8003E2C4B535845441B2121592DB8003F2C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800402C2020456944B001602DB800412CB800402A212DB800422C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800432C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800442C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800452C2020456944B001602020457D691844B001602DB800462CB800452A2DB800472C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800482C4B535845441B2121592DB800492C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB8004A2C2020456944B001602DB8004B2CB8004A2A212DB8004C2C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB8004D2C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB8004E2C4B20B0032650585158
B080441BB04044591B21212045B0C05058B0C0441B2159592DB8004F2C2020456944B001602020457D691844B001602DB800502CB8004F2A2DB800512C4B20B003265358B0801BB040598A8A20B0032653582321B0C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB800522C4B535845441B2121592DB800532C4BB800095058B101018E59B801FF85B800441DB9000900035F5E2DB800542C2020456944B001602DB800552CB800542A212DB800562C2046B003254652582359208A208A49648A204620686164B004254620686164525823658A592F20B00053586920B000545821B040591B6920B000545821B0406559593A2DB800572C2046B00425465258238A592046206A6164B0042546206A61645258238A592FFD2DB800582C4B20B0032650585158B080441BB04044591B21212045B0C05058B0C0441B2159592DB800592C2020456944B001602020457D691844B001602DB8005A2CB800592A2DB8005B2C4B20B003265358B0401BB000598A8A20B0032653582321B0808A8A1B8A235920B0032653582321B800C08A8A1B8A235920B0032653582321B801008A8A1B8A235920B0032653582321B801408A8A1B8A235920B80003265358B0032545B8018050582321B8018023211BB003254523212321591B2159442DB8005C2C4B535845441B2121592D00000000020042000004D005BD00030007003FB800532BB800082FB800092FB8000810B80000D0B800002FB8000910B80003DCB80004DCB8000010B80007DC00BA0007000000562BBA0002000500562B3031331121112711211142048EB8FCE205BDFA43B8044DFBB300000001008EFE5E026105D50014003E4009141109131617171A09BB019C00080014019C400E400080044C10191516F7216C5218B80732852B2B4EF44DED1ADD1AEDD4ED4E456544E6003F3F3130010207061110171613232E01272627263510373613025E9D2F475132937992462938160B5D3BBB05D5FECF90DBFEE1FEDEF094FEEAE47E6C94A8574F0128E7930125000000010044FE5E021705D500130036400C081100131517171A044C0F13BB019C00000009019C400908191415F7213F7B182B2B4EF44DEDD4EDDDED4E456544E6003F3F3130131237361110272603331E01171E011510070603479F2E46513293799A412630295E3BBAFE5E01368ED701210121F0940116F673657DF471FED8E895FEDE0000000100AAFED0018000DA000E002D401600230E0A64080A1017171A07340A640008190F6365182B4E10F44D3CFDED4E456544E6003F4DEDD4ED3130173637363534262723353315140607AA451C0F01026DD66076D10C552D2A070B07
DACA77B41500000000020040FFD9041C0598000F001C00714017870501460815350F051C35070D1238036F18380B1E471D1076C418D4EDFDED003FED3FED313043794034001B0D2601251A2609250526160E18280014001228011B081828001006122801170C1528011302152801190A1C280011041C28002B2B2B2B012B2B2B2B2B2B2B2B2B81005D001716111007022120272611343712211236113402232202111417163303407C60577EFEE2FEFE7E693F7601358AA678AD9F932F48AE0598E5B1FECCFEDCBFFEEEE0BB013BF4AF0146FAE5F80152F4013BFED5FEDDDB85CB000000000100C4000002D5059200080023B10801B80133400C0404070C04079605000A47091076C418C4D5FD39003F3FF4CD313013353E013733112311C4C39A268EC003F68A1359A6FA6E03F60000000100400000041E059D002200A6404E3604460457056B1D6E1E7A1E84018702082A085A196B197C197C1CB519050022010F041C0E1921071C19040100051F0F0F22130A351305201F7521220C217F0738166F220E270F811F38222447231076C418D4EDF4ED10F5EDE4003F3CFD3C3FED1112392F1217390111123912393911391239005D31304379401C04190C2511260B120E2800091407280119040D100A280108150A2801002B2B1010012B2B2B2B81005D36123F01363736353426232207060723363736213212151407060F01060706072115214A85C1C0813452967DB9472604B70342750128F6E37946B5896238641A030EFC29B90112706F4B35536B7D938C4B85BB76D0FEF6A3AC7A47654C3631576AAA000000010031FFD9041A059A003100C4401F490C532D6529632D7529752D069626014B082B0A182B140D03F93114350D20B8012340141135107F0D0D311B3524050735310D1896274411B8014A400F0A382E6F021F2920810327023347321076C418D4EDF4ED10F5EDEDF4ED003FED3FED12392FF4FDE610ED10ED111239011112393130437940362F301926000905261D2522260600032800040308300A28011C231F28001A251828010401072800092F0728001E211B280119261B2801002B2B2B2B012B2B2B103C2B2B2B2B818181005D015D0402353316171633323635342623220607351E013332373635342623220706072334373621321615140706071E01151400230116E5BC0C2846B78EACB5A11225131C26166541729865B4452605B2406E0115DBF0472C46717FFEF2F8270117C88B3F719878947601019F03022038906B7478427AA070C8C3B98452331D1FB180CDFEFE000000000200E3000001B40421000300070032401A052A07032A0006070A0917171A05016404001908096421787C182B2B4EF44D3CFD3C4E456544E6003F3F4DED10ED31301333152311331523E3D1D1D1D10421DAFD93DA0000000002005AFFDA0571
05E5001D001E00B1403B1B0597019605031F011F0482018705891305530803861D111115063A1D030C3A15091E021E1E190331023B1031111A20093119191F20A1216A66182B2B4EF44DED4E10F64DEDF4ED12392F003F3FED3FED12392F10ED31304379403A001C172513260E251B260B160932000D1410320112110F10071C0932000500033201010204030A180C32000F120C3200081A06320104010632012B2B2B2B01103C103C2B2B103C103C2B2B2B2B2B2B815D015D080117232E0123220011101233323736373306070621202726111037362123041E013411C221C5B2D9FEF5F1EFDC733D1EC21A92AFFED7FF00AEE5ACBA01472805E5FEDABB8EA6FECFFEC5FEFEFEBFA95991E89DBD9BCD01AC0145D0E20000000200A50000056305BD000D00180067401F871196120232080B1E0F02001E17080831131A1A0D250E19191AD6217689182B2B4EF44DFD4E10F64DED003FFD3FFD3130437940260116112515260607050704070307020705060A10083201011608320109120B320107140032002B2B012B2B2A2B2B815D2532373637363736351002232111032120171611140702290102D06541744A3B1A0FD9F1FE9FC80253012FA795589BFE86FDAFAA15276F598B53470111012EFB980513D7C2FED1EABDFEB2000000010023FFD9036D05BD00130042402209061906670B7A0697020578040109090412020D9204091125001A150A2507191415B80151B3218C70182B2B4EF44DED4E10F64DED003FED3F12392F5D31305D011407062122263D013315141633323736351133036D3766FEE2A5EABB6B719F311EC501B6BA67BCB3E5696978796D43BA03D300000100970000061705BD001300CB405944014B03020601090316011903D7010513011C03140B1B0C57015803D401DB03D40BDB0C0A040A040D45028602045102970202290A280D380A380D4702570276020725640D0A0203120301020B0C120306081517171A040405B8019B400D0A1F030B06FD0C0102FD0D1F12B8019BB6130019147670182B4E10F43C4DFDE419F43939F4393918E4FD3C4E10456544E6003F173C3F3C1217394B5279B10D0CB801AAB40201020A0BB801AAB202020387054D2E7AFD047DC487052E7AFD047DC43130005D727101725D71132109012111231134363501230115141615112397011D01A601A3011ABD04FE5DC5FE5A05BE05BDFB2604DAFA4303632DD077FB2904D72D36DD34FC9D00000002003BFFE103D0044E001A001B00A7402FA719019818A808AA18034A08119B14030314061D1A070D1D140B1B071B1B1710271201032702111A1D0A2717191C1DB80107B321727D182B2B4EF44DED4E10F63C4DED3939ED12392F003F3FED3FED12392F10ED313043794034001908250C150A26000E1310260112110F1007190A26000500032101
010204030B160D26000F120D2600091806260104010621012B2B2B2B01103C103C2B2B103C103C2B2B2B81005D015D001617232E012322070615141633323637330E01232202351000330702D6E317AF10727EAC4A308892708319AF1EF0BBD2FA0112D41C044EB0D76383A86DA0A1DC8977D5C50133E6011A013A0500010080000003F805BD000B00A740645902013A08011902010706170657056705790678078705B903C903DA030A05050608080709030284029402A4020302391209090405060504066D12070708080705040305060908050204030A00000403060A07060A061A0D09020A29000B190C0DB22162B9011600182B2B4EF43C4DFD3C3C194E10E618003F3C3C3F3C3F1112173901121739874D2E2B087D10C104872E182B5D057D10C010083C083C3130015D00715D7213331101330901230107112380AD01CEE6FE6601B1E6FEB297AD05BDFCAB01C7FE6FFD62021C8AFE6E00000001000000000000642C0B935F0F3CF500110800000000005F4D8F0000000000C621BCD6F865FC270B9108F9000000090001000000000000000100000629FE2900000C01F865FCED0B91000100000000000000000000000000000010051200420239000002AA008E02AA0044023900AA04730040047300C40473004004730031023900E305C7005A05C700A50400002306AA00970400003B04000080000000340034007C00BE00F0015E0184021002BC02E8037803DA041C04A8052A059A0000000100000010006F0009006B0007000200100010005D000007E80A1D00040001B800532BB800492BB8003F2BB800352BB8002B2B4118008001A6009001A600A001A600030069018B0079018B0089018B0099018B00040089018B0099018B00A9018B00B9018BB2040840BA0179001A014A400B041F5414191F180A0B1FD2B80106B49E1FD918E3BB0119000D00E10119B20D0009410A01A0019F0064001F01A50025017A00480028019AB3296C1F60410A01A9007001A9008001A90003008001A9000101A9B21E321FBE012C00250401001F0126001E0401B61FE7312D1FE531B80201B21FC227B80401B21FC11EB80201400F1FC01D9E1FBF1D671FBE1D671FAB27B80401B21FAA29B80401B61FA91D6C1F931EB8019AB21F921DB80101B21F911DB80101B21F751DB80201B61F6D29961F6431B8019AB21F4C96B802ABB21F391DB80156400B1F3638211F351DE41F2F27B80801400B1F2D1D4C1F2A31CD1F241DB802ABB21F201EB8012540111F1C1D931F3A1D4C1F1E1D45273A1D4527BB01AA019B002A019BB2254A1FBA019B0025017AB349293896B8017BB348283125B8017A403648289629482725294C1F252946272729482756C80784075B07410732072B072807260721071B071408120810080E080C080A08080807B801ACB23F1F06BB01
AB003F001F01ABB308060805B801AEB23F1F04BB01AD003F001F01ADB70804080208000814B8FFE0B40000010014B801ABB41000000100B801ABB606100000010006B801ADB300000100B801AD401F04000001000410000001001002000001000200000001000002010802004A00B0018DB806008516763F183F123E113946443E113946443E113946443E113946443E113946443E11394660443E11394660443E11394660442B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B18011DB0964B5358B0AA1D59B0324B5358B0FF1D592B2B2B2B2B2B2B2B182B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B74752B2B2B65422B2B4B5279B376706A66456523456023456560234560B08B766818B080622020B16A704565234520B003266062636820B003266165B070236544B06A234420B176664565234520B003266062636820B003266165B066236544B0762344B10066455458B166406544B27640764523614459B36242725D456523456023456560234560B089766818B080622020B172424565234520B003266062636820B003266165B042236544B072234420B1625D4565234520B003266062636820B003266165B05D236544B0622344B1005D455458B15D406544B262406245236144592B2B2B2B456953427374B8019A2045694B20B02853B049515A58B020615944B801A6204569447500
00>] def
/CharStrings 16 dict dup begin
/.notdef 0 def
/space 1 def
/parenleft 2 def
/parenright 3 def
/comma 4 def
/zero 5 def
/one 6 def
/two 7 def
/three 8 def
/colon 9 def
/C 10 def
/D 11 def
/J 12 def
/M 13 def
/c 14 def
/k 15 def
end readonly def
currentdict dup/FontName get exch definefont pop end
%APLsfntEnd
42/FontType resourcestatus{pop pop true}{false}ifelse
{currentfile 0(%APLT1End\n)/SubFileDecode filter flushfile}if
/FontType 1 def
/FontMatrix [ 0.00048828125 0 0 0.00048828125 0 0 ] def
/FontBBox{-1947 -985 2961 2297}def
/UniqueID 4265107 def
currentdict currentfile eexec
54544758EC884CF30C3CD503CEDBFF3839C47C3C3333173232E3FDBFF439491DB843E1924E63AA7726BBB0485AB56D93D8C0906F647A47162891E73FFC2A9873C4B1EAC5EEBDFFC4D06084FBD84139DF4583C6E259D10699944D1068C9C45667DCCCFB9B7EA01B606435EDCBD273ABAC093D14085CCBAC149BD7382E842CFE0D7FE4FD2EF589A2471F6074A80A8B675C2F7A50D63AC1EF90D787BADD11633CB01CF6EE3B37AAF9078A69AC4740E9B6525D78BBD839551A1CB80DB8682FA5E87591BBD6EE8B946063A2A58D9CA3685AB305495DC5FB5747EB8A9A059C4976C0FE4EEAB1D56FF47F1E9664ED9F4A7DAB763AF92B2F6CF2FA7DEC24710E0B9096E30F772BA7FEA9BDBE496C42ED2CEB58F54E80BDF57CE7B4DB6CCFE7182F43BF93CCA0767AF95D62C5D2C3DC6AE1E6D139F51A2C63432117F1714C5566572EE9967A715420ABDCD1D7BD74F8450B89965FCC81C6ACA565C5F3CCF91D430D1F953E4F1A645300A98DD8C47CD64555F08F422340A85404EAE0D3229C4F9336B9470CACBD6BBF3395104750A915CC6EAAC197668267B8C62D2764C8CD69FD937CA3C924D997A0EDE7964BEB9EA2F92EF70C5E5DA0AA5567765E71F2B911B3C5586B741EEB93F3C73016EC16BFF283758900903D203992EFC8BAFAF13579C602F38C91B2145C684A74C06611B00C1FA345EA5AA002A80B57843F114AFEA926699F2E8022F1D1331DFE6254733147DDB94E77EAC1EAD51170D66C31355D7FFC56C96F93071D2CDD5F60123EB639124E6FA384D09402728516BADCC77378B258B448C4E6A3F1BEB963171E0A57B529B7AF9E2DECB511A9918E27E64F7FD02A30DA5F4DE76625446B3C9697A9DC254AB5998E0B21E386921C16DB40AB5D250BC087F921EE39EFEA12C527394D8DCCBAE91535590E44101244A982B3B619EA4D06DF31A710F34A5CB91E07822B9CB55D28EF5A8F4F62286C8F56011F9D32C2A3813220F753B260F6F0ECB71D82DF8D4EB21A8E3F88FB6A62DCDC25ACBE1E66C10DB1B8F0E72E1E150B75E16BC5A66417709D8EE494389462A88DAB78611EB5841C4D62D814207CED3E53BDEC85AB0F0DFAA190B0B8C00204BBA3048CFEF3CBDA887ADF20E5832A36B8BF77DCBC08CC9B3FD92C2B979A2E66A4847AE53B76E87E8E969619B5387C2E959A9A15D19AAFB0323AC8ABCCD69AC8F7CCB8DC95118734CB7712E108F3295D7B5B5DD85C54C1C7ECA41E4AF08689C864AD14EDB4700174CFB9A115B95DF2595B60DB231A4AC1E28299473EF404068D3493CC339941CBEF3CB5B4BCE0E7ED16E1EB3C45F77B25C197BAD8A3F0E006BB4E1A3532B344AA4A74BE71AF6B70782BFFCC67A12488924194856A3F37A525AE333026B621E2889704F8744F5802140E857453E6E503B60913CA85D8ACCA2B59D1E5691527D70AEDB5B60880FE
1A7AE1C64C43F09398DBCA66DC9B740B021834759C5DA75AFC5B987BA878DC4830E3A34D7C7CB3A8A9679471538BEBF178ABCEBB14CB6DCFD7668FB18831E6966352F9F7BDE260A0CA261DFEA07ADF70D5F9F0F9B90D9CB0C199130DCF5E58DF7EC10A7C88BD7466C1B6C4976FDE29E4F50B058B800FE51CD3F6D51D0D77A33A830B5F98C4165655A680D135751DE1CDD8B9F1947F129547E77C6529DB6C4927E93FF0B989FAB8A2CE46B7775E98E02FC3C93BAFBEC9C4CCE71048F5780BBF83B14286666A6F13BD1AE9B9DBC9B92B2BA9873027F5ACD22B7944E79FE14F8B9234D37E6268EE85FED10DB78A96A857434CE5DEE8CDAF70E2050A567E9DC3342E2416E643B115CDCA6ADFEFA660E5DB1331DC0C28233A130C9D6A1824EF0531B0164F495B317ADC4D9EB013D30DE82224AEDD553D85CD80CFD3495CB8FC7483169332DF265032A9A29D85584E47369B10E4D0E02258F845A5169C398437BCB3FFCCD64F0A617E6C474AC09CC094496EEB2A68FFAD1BCBE6E32F69848E225AC20496908D26F43BA7F37FD12930DB1FDAD8FE6BBCBB1EBBEBE5B8D18DA29BE91C9DE9830D906305B667E49F40F0C9955C623D092C7A8166EE16B7E50FD6B2FC59B84A83F0776D40345EAA6FC75F25D3CB0EA23A5A78A627DDCFB591BCB543201EF28B4AB407788FD163665678B69F88FDC60F4466D4300C42CC37A81AF07E847562F1CDAD533BA9F94F35B740D693F789C2E8E9C741B04820807FB58D58B2CAF9F46D8466549C10B288793FAD7D25C2DF33B93991F56689257A9178A7721196E1DF61044512FEDB17912D496879CE34EE1485C61507E6EB549303EC0EF042428D527C77A0F4AE0B180A8DD903F93D37B603EFF0280DAB4FFF6C412A328A3CB4F4865C56C17F4F59BF6DD9AC1002496E244520619022FD7BF7866E86032086D9961F26F3DF10C9F785D9DF0CF8FFEC97964F1EC4F9B811249C0DF3444C6BD364825CB428469512FCEB57A7F6835EA2B6B2516294B1D1C0051A9F038DE299457780CFE77C0C575A6781F0FD5038F31FCA16765F42CBE9CAFB9C81B364EB5A70C2FBCF69368A18361CD12F99246E04E4E717FB4F404730F7CE5DA0977477806F9510F20BF0F02C0C4947157FF48324E4EDABB83D6872AC61BA116539D1D94C2D1969D7D975B47065EA387FDF043DFA3F866E177DD1DD7657A2DF5C81961F5A0A534FD1F262FA279BC39F4D5DDB562360FA45269C334C34EB76AE9E63E6911806DB520D461CDF4879943F7CD57E23966D8E8F271957D28BC4AF4461047649454DCBF8E2D8B15081FD2530CC04D1085C22901398E1874835EDECA840D77A34936F92574FC5DF776B084ADD8CA5F9B744D3ECE7D75003F73400E01C7FC2B596DC4458A1C3D50E9C7A722E50F780B1A285A417BD2D1A2858B0902A4B7B9AC3E80BF0882F02
89717EF0E627CB122C771F6C9B73120872FD832557C710C6ED826550849B571277C08B1D471D08EC67DC3194317524B12F498F0792F76E50B9D928C3BD99DD186CF5679F4F689447914D7B8FE6B0E4B85EEE4AF11CC79FEA94E57D5D9564A158A7FFA1A744EFCF1920A2D53B18538C2D9FB7DE0DA1D9763E8CA08A8938A3AC3150D17143862EA06D47A9E92DE56BB5CEF1944CDAEF5259346D15AEC2BE2F339FA48095EE720F1E09698FED886E528111CD9FC0F8F6D433EC672CF81A53435BA2E2214CA6A28CA8B149FFE160941622F0C638FF8C8003905760C9BA10DB70FD5B751BE7C198B3D0E6C52216D4019C45967AD95C3CAB1682B15F9B3F42A27AC6A1D549350B7A27B27434873EFD8F869B86518B99027FE90E3511BCC16316369C767EFEE6E5CEAED1A62E51E52DEC1800DA4C28725BCD2DB08DAD539F31545D0BEAE666A8A188C34586C39083F062A8ACD4F62C16D7E3A4BF0D59584D504E720CC73C2A9559A4F368504E447037F791A9C2FE477E551D11FBABE51F4FBA45F0EC6C0DDAC725EA9B90749941760B9F0E2D450313B666E6C333ED842FF24A2DDB119C96FD772E6FD9BB4BE62DB4685FC1055DD0E3B3B75AA44D621023FFEF4F54C858CB861119271F9F655332A46B7BB92C5ECE4842DA85F7833A426FD894D65DFCAF0F665CCBECAD5D66B6FFEDC2CDE990CF84DF4FEB21696AB1109DFF408E7653E80F25DA08022A4A8EB749FA5FA5A9A772F67B6238AFA7205F
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
cleartomark end
%APLT1End
%RBIEndFontSubset
/Helvetica cguidfix
/F2.1/Helvetica renmfont
[ /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.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 ] /Cs2 exch/ColorSpace dr pop
[ /CIEBasedA 5 dict dup begin /WhitePoint [ 0.9505 1.0000 1.0891 ] def
/DecodeA { { 1.8008 exp } bind exec} bind
def
/MatrixA [ 0.9642 1.0000 0.8249 ] def
/RangeLMN [ 0.0 2.0000 0.0 2.0000 0.0 2.0000 ] def
/DecodeLMN [ { 0.9857 mul} bind { 1.0000 mul} bind { 1.3202 mul} bind ] def
end ] /Cs3 exch/ColorSpace dr pop
%%EndPageSetup
0.60000002 i
/Cs1 SC
1 1 1 sc
q
0 0 562 238 rc
-34.5 550.5 m
541.5 550.5 l
541.5 -182.5 l
-34.5 -182.5 l
h
-34.5 550.5 m
f
/Cs2 SC
62 0 0 61 458 156 cm
BI
/Width 186
/Height 183
/BitsPerComponent 8
/Decode[
0 1
0 1
0 1
]
/DataSource cg_aiproc
ID
JcC<$JcC<$e,P"!JcC<$JcF4!JcC<$JcC<$e,P"!JcC<$JcF4!JcC<$JcC<$e,P"!JcC<$JcF4!JcC<$
JcC<$e,P"!JcC<$JcF4!JcC<$JcC<$e,P"!JcC<$JcF4!JcC<$JcC<$e,P"!JcG?An,@n"JcE.Xp&=FYq#'d]!W2cDqXsa\r9sUTrdk+3
s3q"!s2=s4rpp$br;6BaqXs[]p]1'=p\"=Yq==C]qt9m[rV6ACs763=s+13js8N#grVQNiqtU$Vq"sg^
pAFX?p%%hUp[@nPqYpBbr:U$crdk+Es3q"!s3UfCrpp$er;6BdqYU*fq""1YpA=O^o_nCZoA0!4oDA1Z
p&"IUp\Xabq=sgcqtp+p$MYErpTaRrpfmVrq$$Zq"FLXrqZHfrqlTjp&4deNW7K-JcFa0rr2KerquZj
rqcNfrqQBbrq??`qt'^TrpTjUrpTaPqsF1ErTa=Gqs!8,ros4Cq!7qHp$VhKrpTjUrpg!Zqt0dZrqHro=(>p>b;pqr@S7roO%>roa1BrosFJrp9XOrpKdTrpTjUrpfmVrq$-]rq69arqHroEk6rS[M0qqpl!
rnm;)pu;23roO.Aroa:ErosFIrp0RNrpK[Prp]pWrpp'[rq-*]rqHro=";qr.P3ro!\2rS7M1h=]Rlg[a/!h>?+/
i;VX5i;V^7ir8!;jSn?>kkjZElhg,LnG_nUnG_tWo`"O_pAXg`q"X^_r:U$crh]YDs+14Ks82fgrVl`l
qu6Hkq"sg_p&=U_o)A1Yn,DhUmf)VQlMg&Ikl0`Djo4??ir7p6i;VU4h>Z4/g]#q+f_a;"ec=7uec+(\
e,.YoebdqsfDF5"gA]k+h#?./htu@2iVqj9jSn9?k5OTDl2KuImJcPQnG_nUnc&+Vo`"O_p\Xa_qYpBh
r;6HcriZ:Ms+11Ms8N#jrVl`lqu6Hkq>U0dp\smco`"I]o)A.Xmf)VQli-2Kl2KlFk5OKAj8S'8i;VU4
h#?(-gA]b%fDaA#eGI_odK%\mdJhMTchl)gdJMAke,.Ylf)F;#f`'S'g]$"-h>?.0ir8!;jo4EAkPj`F
lMg,KmJcSRnG`"XoD\CZpAXgcq#:*gqYpBhr:U$friZ:Ms+C@Nrq66hr;6BjqYpicbi[+Gbl5lacMPrb
d/28jeGe"tf)FA%g]$"*hYZ71j8S-=kPj]El2L#JmJcPQn,DhUnc&1[p&=[ap\sseq>:$fqtpU0gpAXaao`"F\nb_hTmf)SPl2KoGk5OH@ir7p9i;VU4h>Z.-f`'J$eGdnq
dJhMlci25hbl5fbb5TN^aSs3X`#X
rl+lSrkeZNrkJNKr4i6Fk.UZ+rkJ?Grk\TNrkn`Srl4rXrlP/^rlb;crm1SjrmLeprmh##rn7;*rndY3
ro!e9roO.BrosFIrp0RPqsaUUrq$-]rq??crqQKgrqcWkqu$?irr0D,e,PL/qu6BhrqucmrqcNfrqHEc
rq69^rposTrpB^OrosFGroa:@ro3q7rndY0rn@A'rmh"srm:Yjrm(MerlY5^rl4rUrkn`OrkSNJrkABF
rk/3A!P>uC])K5%\,3]4])K>@]`,VD^AbnH_#D1L_u@XS`r=*ZbPo`bcMl/hd/MMnec+2"gA]k+hYuF3
iVqm:kPj]El2L&KmJHAOnc&.Zp&=[ap\t!cqYpBkr;6HcrkSQ_s-D"H]`,PB\c0,<\,Nc6Zi79/
YQ:u4ric=*ribIerilC*qlp(*rj2U2rjVm:rji$?rk83Drk\TNrl4rYrlY5brm1SjrmUksrmq)'rn[S2
ro!e9roF(ArosFIrpKdSrp]pXrq$-]rqHrjMg6rj)O.qlg"$
riH'ur2TOjn#,rZpo==priQ($riuI.rjDa7rj_s>rk/6ErkSNNrl+lXrlY5arm1SkrmLesrn.5(rndY3
ro*k
rr2Thrquclqt^6crq??arq$-[rpTjUrpB^Mroa:Bro="9rndY1rn%/"rmUknrm(Merl>#Wrk\TLrk8_CPa8X<^cMl2ie,InsfDaV*hu;R5j8S0>kPjcGm/HMRn,DkV
oD\F^pAXgcq>:$cr;6HirlkDks.98`rVl`oqtp3gq#:!dp&=U_nc&%Wmf)POl2KlFjo4<>hu;I2gA]b(
eGdkpci2,eao9?[_Z%=L^&GSA\,Nf7Z2V!,Y5YI#W;`[nU]."eTDkG]SGnuVR/WHOQMm'LQ'M?5plb*-
plbN=rg!JKrg3VOrgNhUrgs+]rh9=drhf[nri5t#ric=+rjDa7rji$ArkSNMrl>#[rlb;ermLeqrn.5(
rn[S2ro3q=roa:Frp0ROrpTjVrq-3_rq?6arqZQjrquHfbl?/lU&Y,kq#13irql]krqZQgrqHEarposU
rpKdProsFFroO.rj2U/ric=&ri,mprhKIeqk*kXrgNhQ
rg*PJrf[8Crf@&?!07/AO8b1:NW+n*Mu/J4NVeb8OT(=?OoCOCPl?sIQiZ=2iVqsU-fpAX^`o)A1Yn,D\QlMg#HjSn0NW+n9MZ/J3M#N,/K`Qm]re10$rdsTiqh"g"re19)
reCE.re^W3rf$i9qiC`=rfd>JrgEbTrh'1_rh9=hri,muric=,rj;[9rk8Crf@&;
repc3reLK-re19'rdt-"!.XorrdO!XqgSNoqgeZtre(3'reCE-reUQ3rf-orf$i4reCE+rdt-#rdXotrdOiprHeQlHiA?gH00ANH2Dpe
HiAHmIf=lsJ,Y#uK)UK'L]3,/N;eh9OT(CAPl@$KSGo,ZT`1bdVuE^qYPtj,[/R]:^&GhH_u@^UbPoie
df.bqgA]n,i;V^7jSn?Ali-;Kn,DnWo`"Uaq#:*gqYpBkr:p6frnIJ%s/Q+urqlZnr;QQiq>U-fpAX^`
nc&%Wn,DYPl2KlFir7m8hu;=.f)F+sd/M8gao93W_>_1J\Gil7Yl:g)WrApqU&L\`Sc4uTQ2ZpFO8b+;
MuJM2L&Q]'JGt#sIK"TmHN&3eFoHL]Er9t6E;4JNFT-F^H2`-hHiAHmJ,XutK)UH&L]352NW,"6tV#I%dSc5&VQi<-HO8b.i;0L&QZ&J,XlqHiA?jGl)X_FSg(TDZF\QDYS&:C\V`C
DYnAOE;jkSFT-F^GlE!fHiAHmJ,Y#uL&Ql,M>iM6OT(FBQiR(Zi7N7]`,_G_u@^U
bPoiee,Iqtg]$%.i;Vg:kPj`Fm/HGPnG`"Xo`"R]q#:*gqu6NjrVlfNs3q"Ps8N#prVl`oqu6Hkq>U0g
p\sgao)%nTm/H>Mk5OE?i;VU4g]#k)df.Slc2P`^_u@FM]`,D>ZMq',WrApqU&L\`Sc4rSPQ$[CNrFq8
L]2r*K)U9!If=]nH2_scFT-@\E;OSND>nAMCA_iDC&Vf7BDZBAC%uH?D#S;NDu4MQF8g:\FoH[cHiAKn
J,Y#uKDpZ*MZ/Y8OT(LDQN!HSTDkP`VuEarYPtj,\,O&>^]).M`r=6^d/MJmf`'V(hYuI4jSn<@li-;K
n,DnWo`"Uaq#:*gqYpBkr;QZlrnd\(s0Mb)rqlZnr;QTmqYphu;I2
fDa>"dJhDiaSs0X_#D%H])K#7YPt['V>d7hTDk>ZQN!'HOT(7=MZ/;.K)U9!IK"QlH2_pbEr0hTDZ4MP
C]8)JB`;WCAc?6=@f^(LraO\lqdTP7rac">rau.Crb;@Irb_XPqf)OUrcJ-brd4WmrdXp!re19.rf$i<
rf[8IrgWnZrhBCgriQ1(rj)O7rk8roj@IrpTjUrpg![rq69brqZQi
rqlTjrr)`njT!^/[f?@+qu-NlqtpBhrqQKdrq-3]rp]pTrp9XKroa:@ro!e2rn7;#rmC_jrlG)Xrk\TH
rj_s7ric=$rhoahrgs+Yrg!JGrf@&8reLK+rdaurrd4Wgrc\9_rc%jSrb_XLrb;@Frau.@rac";qdKJ3
!+,b6?e8W`?iFI4@JaO5AH$0>B)ZKCC&VlHD>nJQE;jtYFoHUaHiAHmJGt6$L]3/0O8b=AQ2[9PT)PG_
VuEarYPtp.\Gj/?_>_FQaSsKadJhYpg&Be+i;Vd9k5OWEm/HGPnG`%Yp&=[aq#:*dqu6NjrVlfWs3q"Y
s8N#mrVl`oqu6Hkq#:$ep&=R[nG_hSli-)HjSn*:h>Z+,fDa.rc2Poc`;[UP^AbS?ZMq',WrAmpU&LV^
R/W?LOT(7=MZ/;.Jc:/uHiAQJ)7oiplgoiqE#
ra#D-ra>_4ra>_6raYq=rb)4ErbMLLrbqdTrc.p\rcnEhrdXp!re19.rf$iDrf6u6
re19$rdOinrd"Karc8!Vrb_XLrb;@Crac";ra>V1r`o>)pfRJr!EWA%lJ+-
@/aX7A,^'=C&VoID>nJQEW1%YH2`0iIf=lsL&Qo-NrG.>PQ%'NT)PG_WW'%!Yl;*1])KJD_u@aVc2Q)h
eGe)!hYuI4ir8-?l2L&Kn,DkVoD\I_p\sseqYpBkr;QZlroa=1s1/1)rVl]nqYpZ1.eGdkpcMkoa`;[ON]Df8lIt,=oMP&=7oPn;uortpf%&fpeg]^qc!Jnoi:umr`K/&r`fA,ra#M0ra>_7
rac"?rb2:Hrb_XRrcA'^rcnEjrdb!#re^W5rfI,ErgEbWrhBCiriH+(rjMg-r`fA*r`T5&r`9"ur`&kppJCrg;>sAj:ub@N;#X8i;#=,e;Z9Yp5hb*?2J".@K'd9
BDuWEC]88OEW1%YH2`3jJGt0"L]383OT(OERJriXU]..iY5Y^*[Jml=_#D7NbPofdd/M\sgA]t.iVqs<
kl0rJmJcVSoD\F^pAXjdq>U6fr;QZlrpBa7s1eU5rqlZnr;QTmq>U0gp\sgao)A.Xn,DYPkl0ZBir7j7
gA]\&dJhDiaSs-W^](hD[JmB/WrAmpT`1G[Qi<*GNW+k8KDpH$If=QjFoHC[DuOPOC&VZB@f'R4?N+4/
=T2D$X2e:]=)h:%hk;Z9Vo<;oqt=8l>$>lJ%+@/a[8AH$n(df.Sl
aSs0X_>_(G[f3Q2X8]!qU&LS]R/W5hY'Jrg`t]rhf[qriuI2rk&0Grl+lXrm1Smrmq)(rndY5roX4ErpB^Rrpg!Z
rq??crqQKirquZlrr2rj)O+rh]Ugrh'1Urf[8AreUQ,rdXoprcnE`rc%jRrbDFEraYq8ra5Y0r`fA(r`9"ur_i_mr_NMi
r_NMgpe:QXr_!,\p.=C;oh#$Qr_*#[qbI,er_NMjr_i_qr`B)$r`fA-ra5Y4rac"?rbDFKrc%jXrce?h
rdXp#reUQ7rfd>Irh'1arh]UsriuI1rkABJrl"f[rm1Slrn7;+ro!e:roj@HrpKdSrpg!\rq??crqcWk
rqucoqu6*be,RDerr2]krqcNfrq??`rq$-YrpB^NroX4?ro!e2rn.5"rm:Yfrl4rQrk&0=rilC&rhoag
rgWnQrfI,_3ra#M*r`9"ur_reor_`Ykr_NMgr_3;ar^urWr^coV
rC6BJmmZ\7r^ZiVpdtHWr_*5ar_EGgr_WSkr_i_or`/r!r`K/*ra5Y4rac"@rbDFNrc.pYrd4Wnrdk')
rf$irkSNQrlY5erm^r"rnRM2roF(@rp0ROrp]pYrq69arqZHfq#1*hpA`VA
`W,r:qu-NlrqcWirqQKcrq-3[rpTjQrp'LDro*k6rn7;%rmLeirl>#Trk8<@rj2U*rhoairg`tSrfR2=
reUQ+rdOimrc\9[rb_XLrau.>ra>_3r`fA)r`9"tr_renr_WSir_Jrh'1brhob!rj;[7
rkJHNrlG)brmUktrn[S2ro*k?rp'LNrpTjWrq-3arqZQirql]mrr)`npA`VAbQ%S@qu-Nlrql]krqQKd
rq69]rp]pUrp'LGroO.;rnRM+rmC_jrlb;XrkABDrj)O+ri5skrgj%UrfI,_9rb)4Irc%jWrd+Qlrdk')rf$ip-[t/j$W]3r^H]Rr^ZrYr^m)]r_3;cqbR2gr_resr`K/(ra5Y6
rac"BrbVRQrcS3crdOj!reUQ5rfd>Krgs+cri5t$rjDa:rkSNQrlb;frmq)&rndY6roX4Drp9XPrpg!\
rq??cqtg\qDbQ%S@qu-EhrqcWgrq??_rp]pSrp0RHroF(9rnRM)rmLekrlP/Wrk8_3r`oG)r`9"tr_WSir_EGdr_*5_r^m)[r^ZrWqaLKP
lpLV9a[5PcqaCEPqaUQTr^d#[r_!/_r_3;dr_NMir`&ktr`K/)ra,S3rau.Drb_XRrcS3drdXp#reg]9
rfmDNrh07friH+(rjVm?rkn`Vrm(Mkrn%/)rnm_8roa:HrpB^Srq$-^rqH_2r`T5%r`&kpqbR2br_*,[r^cfRr^?*?nNt#XnjE:BpdY-Or^m)^r_<8cr_i_pr`B)&ra#M2
rac"@rbh^SrcA'drdXp!repc:rfd>Prh9=eriZ7+rjVmArl"fXrm1Smrmq)*ro!e9roj@IqsaUVrq69c
rqZQiqu$Hlq>\qDbQ%S?rqucmrqcWhrqHEbrq$-YrpB^Lroa:?rndY/rm^qorltG]rk\THrj2U-ri5sk
rgj%VrfI,;reCE&rd=]irc%jRrbDFCraGe5r`T5%r`/qqr_WShr_3;ar_!/\qa^EMksOu-^d@BTpdP0P
qag]Yr_*5ar_EGhr_i_qr`B)%ra5Y6rac"Crb_XRrcnEhrdb!&rf$i_Q.b(;uT\l:]=&e9)_E]8H)-Y7fGjU7.3M&6F9)J6iKLQ7K,dU
8,c'Y8cD?]9`%Wb;>sMn=T2P(?iFL5Ac?ECDuOhWG5d!jKDp]+O8bCCRJrlYVZ*[rZi7N7^])4Ob5Tce
ec+8$hYuO6k5OTDn,DhUnc&4\p\sseqYpBkrVQQps8URJdJs4Fqu-NlrqcWgrq??arpg!Vrp9XIroF(:
rnIG(rmUkkrl>#Trk/6=rilC#rhKIbrg!JFrf-o1rdXoorcA'Xrb_XHraYq7r`oG*r`9"rr_WShr_3;`
r^m)[qa^WSr^?*?i^36'mm5GilpLb?r^HfVqag]Xr_*5ar_EGhr_i_rr`K/)ra5Y7rau.Hrc%jXrd4Wp
re191rfR2Frh'1bri#h#rjMg=rkeZUrltGkrn%/(ro!e:roa:IrpKdUrq69arqHEgrqlTkrr)rus3q"q
s8N#srVl`oqu6Hkp\smcoD\7YmJcGNk5OB>hu;=.ec*qpbPoK[^](eCZi7-,V>d1fSGn]NNrFq8JGsrq
GlD[]D>n;LA,]p9?N+(+_:rb;@Lrc8!_rdFcure^W8rg!JPrh07iriZ7,rk8ric="rhBC^rg*PEreUQ+rdOii
rc8!Vrb)4@ra5Y0r`T5$r_`Ykr_EGcr_!/]pdY6NnjD+tr^$BGbWu.ng-YI"qaC3Kr^m)]r_*5cr_NMj
r`9##r`oG0raYq?rbqdWrc\9irdt-*rf@&Drg`t^ri,n#rjVm>rkSNUrltGirn7;+ro!e;roj@JrpTjW
rq-3arqZQirr)co!<1LJeGoFErquclrqQKerq$-ZrpTjOroa:@ro!e1rmq(qrlb;[rkJHBrj)O'rh]Ud
rg3VHrf-o0rdXonrc8!UrbDFCraGe5r`K/"r_remr_EGdr^m)[r^ZrWr^HfSnjD"qr^$BGbWu.ne3`gq
r^?`Sr^QlWr^d#[r_3;dr_WSmr`9##ra5Y6rac"Crbh^Urd+Qmre(30rf[8Irh'1cri5t'rji$Crl+l[
rm:Yqrn@A0ro="@rp'LOrpg!ZrqHEfrqcNi!WDrsrRCkss8Murr;QTmq>U0gpAXX^n,D_Rl2KiEir7d5
f`'A!cMkrb_u@=J[f3N1W;`OjSc4iPNrFn7Jc:&rGQ)R\D#S,I@fBa6>lIe'<;obo:]=&e9E%N^8H)-Y
7K,^D6fUN(62Ejg5kRG$6LmMC7/fXS8,c'Y8cDB^:&[rf;>sPoiP7
PQ%-PUAh+jYl;*1]`,hJaSsKae,J#!h>ZF5k5OWEmJcVSo)A@^p\t!fqu6KorVZ`peGn/#rr2oqrqucm
rqZQfrq69\rpTjRroj@Bro!e2rn%.trlkA]rkSNErj;[.rhTOcrgWnKrepc1rdXomrcJ-XrbDFEra>_2
r`];$r_relr_EGdr_!/\r^ZrWr^?hu;=.eGdenao96X^](\@Yl:[%T`1G[Q2ZjDM#N#*
HiA3fEW0bQBDuE??iF:/=T24t;>sAj9`@Z`8H)*U7Iih"6L-nM5hA?q6iKOO7fGsX8cDE_:]=5j;Z9et
>Q/"/A,^-?C]8>QG5cjfK)UW+O8bFDS,T)[WrB4$[f4&@`;[mXci2Gng&Bn.ir8'=li->OnG`(Zp&=^b
qYp?mrVZ`pqu5=LfDkjLrr)iorqcWgrq69]rp]pSrp'LDro*k5rn%.urm1S`rk\TIrj2U,rhoafrgEbL
rf$i2rdaunrcJ-Xrb;@CraGe3r`T5$r_`Ykr_EGbr^d#YpdOa@i'R<,lTi-Kr^#7)ogALCr^ZrZr_!/b
r_NMjr`9#$ra#M3ral(CrbqdXrd"KnreCE2rfd>Lrh'1friQ1+rk8i/,J,XWjErKtUBDuE??iF7.=8l1u;#X5h9`@W_8H)-V7K,^M6eXm+60LSF5lO('6MNqF
7/fXS8,c'Y8cDE_:&[ug<;p#!>5hn.A,^-?DZ4\UG5d!jK`6i-OT(UGSc5McXT#I']DfVF`W"0^df.hs
h>Z@3j8SU'doD\7YmJcALkPjE=
h>Z.-df.Pkb5T3U]Df5;Xo>3sT`1>XP5^F>K)U5uHN%saDZ4DM@fBa6>lIe';uTVm:]=&e9)_?[7fGjI
6f:<.6/k/:5lO('6M3_F7K,dU8,c-[9`@ie;#XGnpKj!;lcorr1XOgAh0Orr)inrqcWhrq69^rpTjQ
rosFDro!e2rn.4srlkA^rkSNErj2U)rhTOcrg!JErepc+rd=]hrc%jQrb2:=ra#M-r`/qrr_NMfr_!/]
r^ZrWr^HBFi'RE/ha"G3r^#@,ogA^Ir^QlWr^m)^r__=rbMLPrce?hrdb!+rfI,E
rh'1dri?%*rjr*Erl>#]rm:YsrnRM2roO.Crp9XQrpp']rqQKg!W2`oqu6Qnrn@D.s8N#prVlZmq#:$e
o`"F\n,D\Qkl0ZBhu;@/ec*qpb5T?Y^&GM?Z2U^$UAg\^P5^F>LAl`&HN&$cDuOMNB)Z3;>lIn*<;oep
:]=&e9)_B\7fGjU7/0.*6J4W)5i"d%6iKLQ7K,dU8H)3[9`@ie;Z9Yp=oM_+@/ad;CAr/NFT-UcJGt<&
NW,+?SGo5]W;a($\,O)?`;[pYd/MSpgA^"/jSnBBm/HJQo)A:\p\sshqYC3grr)`nh>c=2rr2fnrqcWh
rqHE`rpg!Vrp'LGro="7rn7;#rm(Mbrkn`IrjDa/rhoagrgNhJrepc0rdFcjrcA'Urb2:Ara5Y/r`K.u
r_`Yjr_*5^r^ZrVr^?EHj$NW/fg)T'r^#I/ogA^Hr^HfVr^m)^r_NMjr_reur`fA/rac"Brb_XUrcnEj
re:?0rfI,Jrh07gric=/rk&0IrlG)arm^r#rndY7roa:GrpTjVrq$-`rqQTkq>gBkrVQTMs5!_SrqlZn
qYp9hp\sd`nc%tUl2KiEir7d5f`'A!c2Pc__Z%.G[/R9.V#HtbR/W3HMZ/8-I/\?hEW0eRB`;N@?N+.-
=8l+s;#X5h9)_B\8,bsV7/0.-6N0:%5c?sI6/=m)6iKLQ7K,gV8cD?]:B")h;Z9bs>5hk-A,^-?D#SGR
G5cmgK`6l.OT(XHTDkYcYPtp.])KSGaSsH`e,J#!h>ZF5k5OWEmf)_ToD\L`q#U?g!;c]nqu5FOh>dKR
rr)iorqcWhrqHE_rp]pTroj@Cro*k2rmq(srlkA]rkSNCrj)O)rh9=]rg!JBreLK(rd+QdrbqdNral(:
r`oG)r`/qpr_NMer^m)[r^QlUr^?NKksGA8bs7mdr^#[5qa:?Nr^HfUr^ZrZr_3;dr_`Ypr`K/)ra>_:
rbDFNrcJ-crdk'(rf-oBrgWn\riQ1*rj_sCrl4r]rmLetrnIG2roO.CrpKdTrpp'_rqQTkq>gBkr;QZo
rn[V1s8N#srVl`oq>U0gp\s^^n,D_RkPjQAi;VI0f)F(rbPoK[^](_AYl:^&T`1DZPl?X@LAl`&H2_ma
DuOGLAH$!9>lIk)c=2rr2oqrquckrqQKdrpg!Vrp9XIro="8rn7;$rm:Ydrkn`MrjDa0ri,mirgNhMrepc/
rdXokrcA'Wrb)4?ra5Y.r`B(tr_WShr_3;^r^ZrWr^?WNk!I*RR6]n$r^6QNr^QlWr^d#^r_Lrh07iric=/rkJHNrlP/drmh#$rnm_8roa:IrpKdUrq??c!VuNk
q>UU-fp&=L\mf)POjo4<>hu;=.eGdenaSs'U^&GA;Y5Y?uT)P,VOoC4:KDpB"
FoHC[D>n,G@fBa6=T2>";Z9Ml:&[fb8,c!W7JK746H;?Z5itE.6iKOR7fGpW9E%Zb;#XAliY:QiOnc&4\pAt*c!;ZNirr([Q
h>dKQrqucmrqZQfrq69\rpKdOroO.=rnm_,rmUkmrl4rRrk8<:riH*rrgj%SrfI,8rdt,trcJ-Yrb_XG
raPk5r`B)!r_i_lr_$Lr^QlWr_*5br_WSlr`9##ra,S4ral(Grc.pZ
rdFctreUQ8rg3VTrhf[srj)O:rkeZSrm1Smrn%/,ro3q=rp0ROrpg!\rq?Hhq#L6iqu6NmrS@M0s8Mur
r;QTmq#:!do`"@ZmJcGNjo49=hYu+*df.Pk`W!^Q]`,28XT#*rSGnfQO8an5Jc:&rF8g.XD#RuE@K'U4
=8l5!;>sAj9`@Z`8,c!W7JfI46H;?Z5i>!.6iKOR7fGpW9)_N`:]=5jOnG`(Zp&Xs`!;QQjrqucoh>c=2rr)iorql]i
rq??`rp]pSrp'LDro!e3rmq(srm(M^rkSNFrilC%rhTO^rg!JDre:?$rd4Wbrbh^MraYq8r`oG'r`&ko
r_EGcr^m)Yr^HfSqa9U7r^"IfQ9bF8k!K&7r^?`Sr^QlYr_*5cr_`Yor`9#'ra5Y7rbDFMrc8!brdb!%
rf@&CrgNh^ri?%&rk&0Frl+l^rmLesrn[S4roF(DrpB^Srq-3`!VlEiq#:0ir;QZNs5!_SrVl`oqu6?h
pAX[_nG_hSlMfiCi;VR3ec*tqc2P]]_#CnDYl:[%V#Hh^Pl?^BK`6K#HiA$aDZ4DMA,]j7>Q.Y%;uTVm
:B!oc8cD3Y7K,^P6g6r:6,Z$S5lO(36N0@O7/fXS7fH!Y9E%]c;#XDmZ@3j8S?Cm/HMRoD\C`p\+[^rql]mrr([Qh>dKQrqucmrqHEc
rq$-YrpB^Mro="9rnRM'rmC_irl"fMrj_s3ri5smrgNhMrf-o1rdXonrc.pTrbDFAra,S.r`/qrr_WSg
r_!/]r^QlUr^?WNksGA8`'BVRr^#[5r^6ZQr^HfUr^m)^r_MrhKIlrilC3rkJHNrltGirmh#'rnm_8rp'LLrp]pYrq-h&d/M8g_u@CL\Gi]2W;`OjRJrBKNW+S0If=WlE;j\QC&VQ??N+1.6iKLQ7K,dU8cDB^:&[rf;Z9\q>Q.t.@K(!?D>nMRH2`9lKDpl0
PQ%!LUAh.kYPu'2^Ac%Lbl5ugeGe8&hu;[8l2L&KnG`%Yo`=g]!;HKhrql]nh>c=2rr)iorqcWgrq??_
rp]pRrosFBro!e2rm^qnrlb;YrkABAriZ7!rhBCZrf[8?re(3!rd"K^rbVRJraGe4r`fA%r_relr_K)U2tGlD[]D#S,I@K'U4>Q.Y%;uTSl:&[ca
8cD3Y7K,^P6h3SC6+]CA5lO(<6N0@O7/fXS7fH!Y9E%Zb:]=8kdKQrquclrqHEbrpp'W
rp0RJro3q7rnRM&rm1SerkeZJrjVm0ri#girg3VHrf$i-rdFcjrc%jQrb2:>ra,S.r`/qrr_NMfr_!/]
r^QlTpd=U=r^".]NBmJ/mm?n=r^HfUr^m)^r_rbVRQrcnEirdk'-rfR2Hrh9=h
riZ70rk8h&ci2,e_Z%7J\,NQ0W;`LiQi<-HN;eD-IK"KjE;j\QB`;H>?N+1.Q.t.@K's>D#SDQGlE*iJc:W-OoC^HU&LthY5Yp0
^&GnJbPolfeGe8&hu;X7l2L&Kn,DnWo`=g]!;HKhrql]nh>c=2rr)iorqcWgrq69]rpTjProsFArnm_1
rm^qnrlb;Xrk8qa:?Or^QlYr_*5br_NMkr`/r%ra,S4rb2:Irc%j]rd=]rrf$i=rg3VXrhoaurjVm?rkeZX
rm:YornRM1ro3qArp9XQrpp']!VcK)U2tGlD[]D#S,I@K'U4>Q.Y%;uTSl:&[ca8cD3Y7K,^P6h3SC6+]CA
5lO(<6N0@O7/fXS7fH!Y9E%Zb:]=8kdKQrquclrqHEcrq$-Xrp0RJro3q7rnRM&rm:Yg
rkeZJrj_s2ri#girgEbKrf$i.rdFcjrc%jQrb2:>ra,S.r`/qrr_NMfr_!/]r^QlUr^?WNnj<=A]0M?@
r^$!>r^6ZQr^HfUr^m)^r_rbVRQrcnEjrdt-.rf[8Krh9=iric=2rkABKrlkAg
rm^r&rnm_7rosFKrpTjXrq-h&d/M8g
_u@CL\Gi]2W;`OjRJrBKNW+S0If=WlE;j\QC&VQ??N+1.6iKLQ7K,dU8cDB^:&[rf;Z9\q>Q.t.@K(!?D>nMRH2`9lKDpl0PQ%!LUAh.kYPu'2^Ac%Lbl5ug
eGe8&hu;[8l2L&KnG`%Yo`=g]!;HKhrql]nh>c=2rr)iorql]hrq??_rp]pSrp'LCro!e2rmh"qrltG\
rkABArilC%rhKI]rfd>@re19#rd+Q`rbh^MraPk5r`fA%r_remr_dKQrqucmrqQKdrq-3ZrpB^MroF(:rn[S)rmLekrl+lP
rk&06ri5snrgNhOrf@&4rdXoorc8!UrbDFBra>_1r`9"tr_`Yir_*5^r^QlUr^?WNksGA8`'BVRr^#[5
r^6ZQr^HfUr^m)^r_EGir`&ktr`oG0raYqBrbh^Urd4Wpre:?4rfmDNrhTOorilC6rkSNPrm(Mkrmq))
ro*k;rp'LMrp]pZrq6Bfp]1*gqu6NmrS@M0s8Murr;QTmq#:!do`"@ZmJcGNjo49=hYu+*df.Pk`W!^Q
]`,28XT#*rSGnfQO8an5Jc:&rF8g.XD#RuE@K'U4=T2>";>sAj9`@Z`8,c!W7JfI46H;?Z5i>!.6iKOR
7fGpW9)_N`:]=5jOnG`(Zp&Xs`!;QQjrqucoh>c=2qu-NlrqQKdrq-3ZrpB^NroO.=rndY+rmUkmrl4rRrk/69riQ0t
rgj%SrfI,8rdt,trcJ-YrbVREraGe4r`K/"r_`Yjr_3;`r^ZrWr^H]Oj$LdOR6][sr^6ZRr^QlWr_!/`
r_NMjr`/r"ra,S4rac"Erc%jYrdFctreUQ8rg3VTrhoatrj)O9rk\TRrm1Smrn%/+ro*kU-fp&=L\mf)POjo4<>hu;=.eGdenaSs'U^&GA;Y5Y?uT)P,VOoC4:
KDpB"FoHC[D>n,G@fBa6=T2>";Z9Ml:&[fb8,c!W7JK746H;?Z5itE.6iKOR7fGpW9E%Zb;#XAliY:QiOnc&4\pAt*c!;ZNi
rr([Qh>dKRrr)iorqZQgrq??]rpTjQroa:@rnm_.rmh"prlP/WrkJH?rilC$rh07Zrfd>>re19#rce?_
rbqdKraYq7r`];&r_remr_EGdr^d#Yr^QlTqa9L4a$?%Xk!K&7qaCEQr^ZrYr_3;cr_WSmr`B)&ra5Y7
rb)4KrcA'_rdXp$repc>rgEbYri,n#rjDa?rl"fXrm:Yprn7;.ro="@rp9XPrpg!]rq?Hhq#L6ir;QZo
rn[V1s8N#srVl`oqYp9hpAXX^n,D_Rkl0ZBi;VL1f)F(rb5TBZ^](_AYl:^&T`1DZPl?X@LAl`&H2_pb
DuOJMAH#s8>Q._'<;o_n:B!rd8H)-Y7fGgQ6fp`46-VZb5lO(36N0@L7/f[T8,c'Y9`@fd;#XGn=8lG'
?iFU8C&W&MFT-RbJGt<&N;f(@S,T)[X8]C'\,O/A`;[pYdJh_rg]$.1jo4KCmJcVSo)A@^p]:6f!;c]m
rr)iqh>c=2rr2oqrquclrqQKerpp'XrpKdLroO._1r`K/"r_`Yjr_3;_r^d#Xr^HfSpd=:4r^"doT0WBAk!Jr4r^?`Sr^QlWr^m)_r_EGi
r`/r"r`oG1ral(DrbqdXrd+QpreLK4rg!JPrh9=nrj)O5rkSNQrlkAirn%/(ro*k5hk-A,^-?D#SGRG5cmgK`6l.OT(XHTDkYcYPtp.])KSGaSsH`e,J#!h>ZF5k5OWEmf)_T
oD\L`q#U?g!;c]nqu5FOh>dKRqu-NjrqQKerq-3[rpKdNroa:@rndY-rm^qmrlP/Wrk/6=rilC!rh07[
rfR2=re:?#rcnE_rb_XJrac"8r`fA(r_renr_EGbr^m)[r^QlUr^?WNi'R<,fg)T'r^#7)r^6ZQr^HfU
r^d#[r_!/br_WSmr`K/(ra5Y8rb;@Krc8!_rdOj#repcLAl`&HN&$cDuOMNB)Z3;>lIn*<;oep:]=&e9)_B\7fGjU7/0.*6J4W)5i"d%6iKLQ
7K,dU8H)3[9`@ie;Z9Yp=oM_+@/ad;CAr/NFT-UcJGt<&NW,+?SGo5]W;a($\,O)?`;[pYd/MSpgA^"/
jSnBBm/HJQo)A:\p\sshqYC3grr)`nh>c4/rr2oqrql]krqQKcrq$-Xrp9XKroO.;rnRM*rm:Ygrl>#R
rjr*9ri?$orh'1TrfI,;rdauqrce?\rbVRIra>_2r`fA%r_relr_%r^#F,YsA:S
h*Ud%r^HfUr^ZrZr_*5br_NMkr`/r%ra,S3rb2:Hrc%j\rd=]qrepc;rg!JTrh]Uprj;[9rkSNRrlb;f
rn.5*ro!e;roj@JrpTjWrq69crqQTlqZ-NmrVlfMs4[MPrr2lqr;QQlq#:!do`"C[mJcALkPjH>hYu7.
dJhDiao9-U]`,A=XT#*rT`1>XP5^I?KDp?!H2_g_D>n8KA,]m8?2dq)sPo=8lM)@/a[8C&VuKEW17_If>!!NW,+?R/WcXVZ*[r
[f3r=_>_RUc2Q,igA]q-iVr$>lMg2Mnc&1[pAXjdq>pNl!;uiprr1XOgAh0Orr)iorqcWirq??`rpg!U
rp0RIro3q6rnIG$rm1SerkeZJrjVm1ri#gjrgNhNrf@&3rdXoorcA'WrbMLDraGe5r`K/"r_i_lr_i/,J,XWjErKtUBDuE??iF7.=8l1u
;#X5h9`@W_8H)-V7K,^M6eXm+60LSF5lO('6MNqF7/fXS8,c'Y8cDE_:&[ug<;p#!>5hn.A,^-?DZ4\U
G5d!jK`6i-OT(UGSc5McXT#I']DfVF`W"0^df.hsh>Z@3j8S#Trk8<;riZ7!rh'1Xrfd>>re:?%rd"KbrbqdN
rau.rgEbXri#h!rj2U;rkeZTrm1Smrn%/+ro*k;rp'LLrp]pYrq69b
rqcWk!W;iqr;6KIs4@;Mrr2lqr;QQlp\smco`"@ZmJcGNjo4<>hu;=.eGdenao96X^](\@Yl:[%T`1G[
Q2ZjDM#N#*HiA3fEW0bQBDuE??iF:/=T24t;>sAj9`@Z`8H)*U7Iih"6L-nM5hA?q6iKOO7fGsX8cDE_
:]=5j;Z9et>Q/"/A,^-?C]8>QG5cjfK)UW+O8bFDS,T)[WrB4$[f4&@`;[mXci2Gng&Bn.ir8'=li->O
nG`(Zp&=^bqYp?mrVZ`pqu5=LfDkjLrr)iorql]jrqHEbrpg!VrpB^KroF(:rnRM)rmLeirl4rQrjr*9
ric_;rbMLOrcJ-crdXp%rf$ilIh(sPo=8lJ(?iFO6C&VuKE;k+]I/\ZqMZ/\9
Pl@6QUAh(iYl;*1]`,hJaSsKaeGe/#hYuO6k5OWEmf)_To)A@^q#:-equQcp!<)fogAf\&qu-NlrqcWh
rqHE`rpg!Vrp'LGro="9rnIG'rm:Yfrl+lOrj_s5ri5sorh'1VrfR2>re(3"rd+Qarbh^Mrac":ra5Y,
r`/qrr_WShr_3;_r^d#Yr^QlUr^?YPtL"UAg\^QMusE
M#N&+If=NiErL"VBDuH@?iF=0=oMJ$;>sDk:B!oc9)_EW7fGgH6eXm+62Ejj5lO('6M3_C7/07N8cD?]
9E%]c:]=5jlJ+0A,^-?DuOhWG5csiK)UT*O8bFDSGo8^WW'+#\,O&>_#DLUc2Q,ig&Be+i;Vj;
kl0rJn,DnWo`"Uaq>U6irVZWprm^tts8N#prVlZmq>U0gp&=U_nc%tUlMfuGiVq^5g]#_%d/M8g_u@FM
])Jr5X8\spTDk8XPQ$L>L&QW%H2_pbE;jYPB)Z9=?N+1.=T27u;>sAj9`@]a9)D-X7efCH6eXm$62X%)
5kRFp6MNqC7/KIQ8,c-[9E%Wa:]=5j;uTnu>5hk-@fC$>C]8;PFoH[cJGt<&MuJq>RJriXV>dOpYl;65
^Ac%Lbl5ugeGe5%hYuL5kPjcGmf)bUoD\F^q#:*gqYpHkrW)rIs4%)JrqlZnqu6Hkq>U*eo`"C[nG_eR
l2K`Bi;VO2f)F+sci1o__>_.IZi7-,WW&RiS,S]PO8b"8KDp;uGQ)X^DZ4ALAc?*:?2e%,5hh,@/aa:C&W#LErL=_
IK"luM>iS8Q2[9PT`1qiY5Yd,^&GkI`W"3_e,Iqth#?41j8Shu;=.ec*qpbPoK[^](eCZi70-V>d1fSGn]NNrFq8JGsrq
GlD[]D>n;LA,]p9?N+(+ra5Y/r`K/#r_`Ykr_NMdr_!/]qa^WTqaLKPpd<_$
o0Vn3brbVRQrcJ-drdb!$rf$i=rg*PTrhKIl
riuI2rk&0IrlG)`rmUkurnRM2roF(ArpB^Rrp]pZrq??drqcWkrquZm!WW2Ks3CZDrr2lqr;QQlq#:!d
p&=L\nG_nUkl0]Cir7g6gA]Y%d/M5f`W!XO\c/r7XT#*rT`1AYPl?aCM#N&+J,XWjF8g+WC&V]C@K'X5
>Q.b(;uT\l:]=&e9)_E]8H)-Y7fGjU7.3M&6F9)J6iKLQ7K,dU8,c'Y8cD?]9`%Wb;>sMn=T2P(?iFL5
Ac?ECDuOhWG5d!jKDp]+O8bCCRJrlYVZ*[rZi7N7^])4Ob5Tceec+8$hYuO6k5OTDn,DhUnc&4\p\sse
qYpBkrVQQps8URJcN!nCrr)iorql]krqQKerq-3[rpTjProsFDro!e2rn7;!rm(Mdrk\TIrj_s3ri?$q
rh07ZrfmDBreUQ*rdFcjrcA'VrbDFFra>_3r`oG(r`/qqr_WShr_hYu:/ec*tqc2P]]_>_+HZi70-WrAalSc5&VOT(1;LAl`&I/\BiE;j_RCAqcC@K'U4
=oMM%nMRGlE'hJGt<&N;eqlMg5Nn,DnW
o`"Xbq>U6fr;QZlrW3'!e,RVkqu-NlrqcWirqQKcrq$$Vrp9XJro=":rndY*rmUkmrlP/XrkJHArj)O+
rhTOdrgj%Prf@&:rdt-!rd=]drc.pTrb)4@ra>_2r`T5%r`&kpqbR2br_*,[r^cfRr^?*?nNt#XnjE:B
pdY-Or^m)^r_<8cr_i_pr`B)&ra#M2rac"@rbh^SrcA'drdXp!repc:rfd>Prh9=eriZ7+rjVmArl"fX
rm1Smrmq)*ro!e9roj@IqsaUVrq69crqZQiqu$Hlq>\qDbQ%S@qu-EhrqcWgrq??_rp]pSrp0RHroF(9
rnRM)rmLekrlP/Wrk8_3r`oG)r`9"tr_WSi
r_EGdr_*5_r^m)[r^ZrWqaLKPlpLV9a[5PcqaCEPqaUQTr^d#[r_!/_r_3;dr_NMir`&ktr`K/)ra,S3
rau.Drb_XRrcS3drdXp#reg]9rfmDNrh07friH+(rjVm?rkn`Vrm(Mkrn%/)rnm_8roa:HrpB^Srq$-^
rqHrndY.rmh"prlkA^rkSNFrjMg1
ri5snrgs+WrfmDBre^W-rdOilrcJ-YrbVRJrac":ra,S-r`K/#r_reor_NMgr_3;ar_!/]r^coVr^QcR
ogJ[EqEi:jr^66Er^H]Rr^ZrYr^m)]r_*5ar_EGgr_`Ynr`9##r`];-raGe:rb;@Jrc%jYrd"Klre19-
rf6uBrgEbWrhTOnrilC1rk&0Frl>#]rm:Yprn7;-ro3q>rosFLrpTjVrq-3`rqQKhrql]mrr)`nq>\qD
bQ%S@qu-Nlrql]krqQKdrq69]rp]pUrp'LGroO.;rnRM+rmC_jrlb;XrkABDrj)O+ri5skrgj%UrfI,<
reUQ)rdOimrc8!Vrb_XIrac"9ra5Y/r`K/"r`&kpr_WSir_EGcr_!/]r^coVr^QcRpdFaAp-[t/lpLP9
r^H]Rr^ZiVr^m)]r_*5cr_NMir_i_or`/r"r`fA/ra>_9rb)4Irc%jWrd+Qlrdk')rf$iJrh'1brhob!rj;[7
rkJHNrlG)brmUktrn[S2ro*k?rp'LNrpTjWrq-3arqZQirql]mrr)`npA`VA`W,r:qu-NlrqcWirqQKc
rq-3[rpTjProsFCro*k6rn.5#rmC_hrl>#Trk/6>rj)O)rhoairg`tSrf[8>reLK)rdOimrc\9[rb_XM
ral(=ra>_3r`oG+r`9"tr_renr_WSir_rg3VSrhBCiriH+)rjVm>rkeZTrlkAh
rmh##rnm_7roF(Crp9XQrpg!Zrq69crqZQiqu$Hlqu6_3ra#M*
r`9"ur_reor_`Ykr_NMgr_3;ar^urWr^coVrC6BJmmZ\7r^ZiVpdtHWr_*5ar_EGgr_WSkr_i_or`/r!
r`K/*ra5Y4rac"@rbDFNrc.pYrd4Wnrdk')rf$irkSNQrlY5erm^r"rnRM2
roF(@rp0ROrp]pYrq69arqZHfq#1*hpA`VA_Z0W7qu-Nlrql]krqHEcrq69\rp]pTrp'LGroF(:rnRM+
rmLelrlkA[rk\TJrjDa2riZ6srhBCarg*PHrf@&7re19#rd=]ircA'Xrb_XLrau.>ra>_4r`oG,r`K/#
r`/qqr_`Yjr_WSir_E5^qb-o\rCQ]Sk",/:qb$i\pe:Q[r_WSir_`Ymr`/r!r`K/(ra#M1ra>_9rau.E
rbVRQrcA'_rd=]pre19,rf@&Brg*PUrhBCgriZ7*rjDa>rk\TPrlkAfrmLf!rnRM2roF(Brp'LNrpTjV
rq69arqHEgrql]mrr)`nnGgu;_Z0W7qu-Nlrql]krqQKerq??_rpg!Vrp0RJroa:?rnm_1rmq(srm1Sb
rl"fOrjr*;riuI&rhf[hrg`tSrf[8?re^W.rdauqrd"Karc.pTrb;@Eral(;ra>_3r`fA*r`K/#r`/qs
r_i_mqbQlZr_38`p.P9Tpdt-Noh50Uqb@&bqbR2gr_i_pr`/qur`K/&r`fA.ra5Y5ral(Arb;@Lrc%jX
rd"Kjrdb!%re^W6rf[8Irg`t^rhf[priuI1rjr*Erl+lXrm1Smrmq)(rnm_7roa:Frp0RPrpg!Zrq??c
rqQKhrql]mrr)`nnGgu;^]4<4qu-Nlrql]jrqQKerq-3\rp]pUrp0RIroF(rg3VSrh07fri5t$rjDa:rkJHNrlP/armC_qrn@A/ro3qX8j<;onsQ.q*?iFL5A,^-?C&VoIDuObUF8gIaI/\ZqK)UQ)
N;eqU-fpAXaanc&"VmJcALkPjTBi;VR3gA]V$dJhGja8X$V_#CqE[f3Q2
XT#0tU]-kaRf8TOOT(4n>MBDuNBAc?-;@/aO4?2e+.>PM>"lJ%.?iFI4@K'j;B)ZHBC]82ME;jqXG5cacIK"crKDp]+MuJh;Q2[3NT)PMaVuEds
Z2V01])KME`;[gVcMl5jeGe2$h>Z@3jo4HBl2L)Ln,DkVp&=[ap\t!fqYpBkr;QZirpBa7s1/1/rqlZn
r;QTmqYp9hp\smcoD\=[n,D\Ql2KlFir7m8hYu.+eGdhoc2Pf`_u@FM])K/;Yl:a'WW&UjT)P5YPQ$^D
NrFk6K`6N$If=]nH2_maErL"VD>n;LC&V]CAH$';@/F=1>l.b#=T);%=',B%nl>Haoi:lir`Aksr`f8)
ra5P1raPk:ral(CrbMLMrbqdUrcA'ard4Wnrdb!%reUQ6rfI,CrgWnYrh9=jriQ1(rjMg;rkJHMrlG)`
rm:Yorn%/+ro!e8roa:Frp9XQrpg!Zrq??crqQKhrql]mrr)`nkPs$2\c;[.q#13irql]krqQKerq69^
qsaUPrp0RHroF(:rn[S,rn%.rrltGcrl"fPrkAB?rj)O,ri5sprh9=^rg<\LrfI,=reg].rdk&urd4Wi
rc\9\rc%jTrbVRKrb;@Eral(=qdKJ2ra>_4ra,S0!*fP0>kM=i>4l,!>lJ%+?N+@3?iFI4@K'd9Ac??A
C&VoID#SAPE;jkVG5cacHiANoK)UH&MZ/S6OT(LDRJrcVU&LqgWrB4$Zi7E4^AbtJ`;[sZcMl2ifDaM'
h>Z@3jSn?Ali-;KnG`%Yp&=^bq>U6iqu6NjrVQTWs3q"Ys7lTjrVl`oqYpn>MCAqoGB)ZB@AH$*<@fBg8?iXR3?hdsr?2.b*?i+71@K'a8A,^$U6fr;QZiroa=1s0Mb)rqlZnr;QTmqYp
hu;I2fDa>"dJhDiaSs0X_#D%H])K#7YPt['V>d7hTDk>ZQN!'HOT(7=MZ/;.K)U9!IK"QlH2_pbEr0hT
DZ4MPC]8)JB`;WCAc?6=@f^(LraO\lqdTP7rac">rau.Crb;@Irb_XPqf)OUrcJ-brd4WmrdXp!re19.
rf$iroj@IrpTjUrpg![rq69b
rqZQirqlTjrr)`njT!^/YlF_%qu-Nlrql]krqZQgrqHEarposTrp9XMroX4?ro!e4rnIG)rmLelrltG^
rkn`Mrk/6>rj)O,ri5sqrh9=`rgj%Srfd>Crf6u8reLK*rdt-!rdOinrd"KcrcJ-\rc%aQqec=KrG)7F
qe?%Cmq;N2rb;.BqeZ7Krbq[QrcA'\rcS3crd4WnrdXoure(3*reg]8rfI,Drg*PSrh'1`rhoarric=,
rjVm>rkJHMrl4r^rm:Ymrn.5(rndY4roF(@rp0RNqsXOTrq-3arqQKgrqcWkrqucoqu5IPe,QZPq#:9j
qtpBhrqZQgrq69_rpp'XrpKdQroj@DroF(:rn[S.rmq(trm1SfrlG)WrkSNGrj_s5ric=&rhoalrh9=^
rgEbPrf[8Arf-o5reLK-rdt-"rdOimrd"Kfrc\9`rcJ$WqelIPr,2CKk%t$6qel:Lrc%jVrcJ-^rc\9c
rd"KhrdOisrdt-(reLK/rf-o=rf[8IrgNhWrh9=erhoasric=,rj_s>rkSNOrlG)_rm1Smrmq)'rndY4
roF(@roj@KrpKdTrpp'\rq69crqZQirqlTjq#9.Me,QHJrr2fnrquclqt^6crq??`rpg!WrpTjProsFF
ro3q8rnm_.rmq(srm:YgrlP/Wrk\TJrj_s7rilC)ri5sqrh9=`rgj%Trg!JFrf@&;repc2re:?'rdaus
rdFcmrd+QhqfVm[rGqgVh/N.0qfMg[rd"Khrd4WmrdXotrdt-&reLK2rf-oU6iqu6NgrVQTKs3q"Js82fmrVl`lqu6Hkq>U0gp&=U_oD\7Y
mf)VQl2KoGk5OB>hu;I2g&BS%df.Vmc2Plb`;[UP^](hD\,N`5Yl:d(WrAmpU]-qcSc5)WRJrKNPQ$[C
O8b+;MuJP3L]3&-K`6W'K)U9#J,FfqIf"Q^I/\QkIf=ioJGt0"KDpQ'LAlu-M#N>3NW,"Z@3ir8*>kPj`FmJcSRnG`%Yo`"O_
q#:*gqYpBhr;QZfrnIJ%s/5nrrq66hr;QQiq>U-fpAX^`o)A1Yn,D\QlMg#HjSn0NW+n9MZ/J3M#N,/K`Qm]re10$
rdsTiqh"g"re19)reCE.re^W3rf$i9qiC`=rfd>JrgEbTrh'1_rh9=hri,muric=,rj;[9rk8rj2U/ric=&ri,mp
rhKIeqk*kXrgNhQrg*PJrf[8Crf@&?!07/AO8b1:NW+n*Mu/J4NVeb8OT(=?OoCOCPl?sIQiZ=2iVqs=!W;`[nU]-tdTDkD\SGo#WRJrTQQi<6MPQ@#5qih#B
l&kt.qih#Drg!JLrg<\QrgWnWrgj%\rh9=drhf[mri,n!ric=+rjDa7rji$BrkSNMrl4rYrlb;ermC_o
rn7;*rn[S2ro3qro!e4rn[S*rmh"srm:YirlkA^rl+lQrkSNHrk&0=rjDa3rilC)riH*u
ri#gnrhBCcrh'1_rgs+[rL3hWS,SlRRJrTBQi!0LRJWHPS,SuXT)PD^TDkP`UAh%hVuE[pXT#C%Yl;!.
[JmZ7]DfMC_#D1L`;[gVbl5oed/MMnec+2"h>Z=2i;Vd9jo4HBlMg/LnG_nUnc&.Zp&=[ap\t!cqYU3f
rVQTU0gp\smcp&=U_nG_nUmf)POlMg#HjSn0F$X8]'sVuERmU]@1fU]."bU$nZRU&1S`U\gkdVZ*Lm
W;`jsXT#@$YPtg+ZMq92\,No:]`,VD_#D4M`W!mVbPoccd/MGle,InsgA]n,hu;R5j8S-=kl0iGli->O
n,DhUo`"O_pAXgcq#:*gqYpBkr:p6frlP2hs-Wi`rqlZnr;6BjqYU*fp\smcp&=R^o)%nTm/H;Lkl0`D
jSn-;hu;I2g&BY'fDa7udJhJkbl5caaSs-W_Z%@M^](nF]Df>>[f3]6Zi79-Yl:g)Xo5:$X/l6"ri,mq
l)4NZri,dpri?%#riZ.&rj)O0rjDa7rj_s>rk8_=N`r='Yb5TZbci2;je,Insf)FG'h>Z=2i;Vd9
jSn?Al2KuImf)\SnG`"XoD\C]p\Xa_qYpBhr;6Hirkncbs,[3WrqQHkr;QTmqYU*fp\smcp&=R^o)%nT
mJcJOl2KoGkPjN@ir7j7hYu=0gA]_'ec+%sd/MAjcMl&eb5TN^`r$gA]q-hu;R5iVqm:jSn<@kPj`Fm/HDLnGDeUo`"O_pAXjdq>:$f
qu6NgrVQT's3q"#s8N#jrVl`lqu6Hkq>U0gp\smcp&=U_nc&%Wn,DbSm/H>Ml2KoGkPjQAiqq[5hu;L3
h#?%,g&BS%ec+(tdf.Ykd/2/gc2c,ec2PrLbPTN_c25f`chl)ddf.bqec+/!g&Bb*h##t*i;Vd9jSn?A
kl0iGli-;Nmf)\SnG_tWo`"O_pAXgcq#:*dqYpBhr;6HiriuLPs+C@Err2lnr;6BjqYU*fp\smcp&"@[
o)A.Xn,DbSm/H>MlMg#Hk5OKAj8S'8i;VU4h>Z1.gA]e)fDaA#ec+(qe,IbqdJVDkd,r[Od/MGidf._m
eGe"tf)F;#g&B_)g]$%.hYZ71ir8!;jo4HBkl0lHli-8Mmf)\SnGDeUoD\F^pAXgcq>:$fqtU*grUp/p
s3q"!s8Duprq66hr;6BjqYp9ep\XX_o`"F\nc&"VnG_kTmJcDMl2KoGk5OKAjSn0$ebmtseE56WeGe"qf)F:uf`'V(g]$"-h>Z=/i;V^7ir8$
roEt:ro3q9!8mn9i7Hlci;V^4ir8!8jSn9?k5OQCkkjZEli-8MmJHAOnG_tWoDA1Zp&=[ap\=R]qYpBh
r;QZcrh]YDs+149s8N#jrVl`oqtU$eq"sgbpAXaao_\7Zo)%tVn,DhUmf)VQm/H;Ll2KoDkPjW@jo4<@
j7_Nqiqqd5jSn9:$fqtp:$fqt9mdrUTrOs3q"!s4RGOrpp$er;6BgqYU*f
q"sgbpA=O^o_\7Zo(DPLn,`%JrpTjUj7!!:rpTOLqsjRSrq$$Zrq60^rqH %APLeod
EI
63 0 0 61 326 156 cm
BI
/Width 189
/Height 183
/BitsPerComponent 8
/Decode[
0 1
0 1
0 1
]
/DataSource cg_aiproc
ID
JcC<$JcC<$b5[%mJcC<$JcEmmJcC<$JcC<$b5[%mJcC<$JcEmmJcC<$JcC<$b5[%mJcC<$JcEmmJcC<$
JcC<$b5[%mJcC<$JcEmmJcC<$JcC<$b5[%mJcC<$JcEmmJcC<$JcC<$b5[%mJcG-;n,@nJcD2=
p&=U^^&@O$JcF7"b5[%mU]:5jm/?eY_#3d%p&9OBh>bXtJcE%Up&==Vqu$3cr;5"?p&"F[o)8.YJcG!7
b5[%m^An*0o)8@]qtp'_q"am`r:ne9q"XX[o(r@_q#'g`p&9OBq#AM:JcE[grr2Keq#($dqtg:$fqtpU0dp\smco_\7Zo)%tV
nGD\OmJcJLl2KoDkPjWBjT4K)roEk7k2Q0rqrIbU6iqtpU6iqtpZ:1hu;R5iVqp;jo4HBl2KuIlhg,InG`%Yo_\@]p\t!cqYpBhr:p6frjVpMs+C@Nrq66hr:p-fq#:$e
pAX^`oD\=[nc&%Wn,D\QlMg&Ik5OKAjSRp8hu;L3h#?%,f)F5!eGIYjci22gbl5c^ao99[`Vd^S`;@I7
_Z%IM`;[aQ`r=*Wb5TWac25idd/MGleGe"tf)FD&g]$(/hu;R5iVqp;jo4EAl2L#Jm/HJQnG_tWo)A7[
o`"R`p\ss_qYU3frVQT*s2t@os7lQlr;6Bgq>U0gpAXaao`"F\nc&"VnG_hSli-/Jkl0cEj8S'8hu;F1
g]#k)f)F5!df.Ynci25hbl5fbao9B\a8X'W`;[[Q_#_BgrkJHJrkJHHk.UZ+rkSNJrkSNLrkn`Rrl+lW
rlG)\rlb;brm(MhrmC_nrmh#"rn.5)rn[J/ro*k:roa:ErosFJrpB^SrpTjVrpp'\rq69aqtU0drqlTj
q#.f(b5[G#q#:'eqtpBhrqZQgrqHEbrq-3]rp]pUrpKdPrp'LIroa:Bro="9rndY1rn@A(rn%.urmL\i
rltGdrlP/\rl4rTrkeQJrkJHHrk&6Cr4Ds>rji$rk&'?qnDsCrkeZPrl4rXrlP/`rlt>d
rmC_orn%/&rn@A-rnm_5ro=">roa:Frp0RMrpKdSrp]pYrq-3_rqHEerqZHfrqlKhq#822b5[P&rr2]k
rquZjrqcWirqQKerq??`rpp'YqsXONrp'LGroX4@ro*k7rndY/rn7;%rmUkprm1ShrlkAarl4rUrkeZM
rkJHHrk&0@rji$;rjMg5riuO/!O8p,YktWdY5YX"Yl:p,ZMq61[JmZ7\c02>]DfPD^])%J_Z%LQ`r=-[
bPofdci2>ke,Iqtf`'Y)hYuF3iVqp;jo4HBlMg/In,DkVo)A:\p&=^bq#:*gqYpBhr:p6frlP2_s-!E]
rq66equ6Hkq"sgbpAX^`o)A.Xmf)VQli-/JkPjTBj8S!9hu;F1gA]\&eGdkpd/M;hbPoT^`r_4K
^&GYC])K5=[JmQ4ZMq*-YPt^(X8o:%X/l,tri,dnn#,rZri,dpri?%"riZ7(rilC-rj2U3rj_sd:fU]."bU$nZRU&1S`U].(gV>d@kW;`dqX8]7#
Y5Y[)Z2V*/[Jm]8])KAA^])(K_u@^Uao9K_ci2>kdf.erf`'V(hYuF3iVqp;k5OTDli-;Kn,DnWo_\@]
p\t!cqYU3frVQTU0gp\sjbo`"I]nGD\RlMg#HkPjN@ir7j7hYu7.fDa7u
df.Slc2Piaa8WsT_#D+J]DfA?\,N`5ZMq',Xo>@"WW&doV#I+fT_kA\SH,/\S=KSJrgN_Prg@qj@AN
qjRMRrg`tYrh'(\rhBCfrhf[ori?%#ric=+rj2U5rji$?rkJHKrkeZTrlY5brm1SkrmUkurn@A.rnm_6
ro="@rosFIrpTaRrq$-]rq69brqQKgrqcWkrquQiqu5%Db5[t2rr2Thrql]krqZQgrqHEcrq-3\rp]pU
rp9XMroa:CroO.;rndY0rn.5$rmUknrltGcrl>#Wrk\TJrk&0?rjDa3rilC*riH+!rhf[jrhKIcrgs+[
rgNhSrg<\N!1!JIrfmDGqi^r@nrWj5qi^rBrfmDIqj.5KrgEbSrgj%\rh07crh]Ukri5t!ric=*rj2U3
rji$?rkABJrl"fVrlb;crm:Ynrmq)$rnRM0ro!e;roX4Crp0RNrpTjUrq$-]rq??crqQKgrqcWkp&4mh
df7JiT)\fhp&4mfrqcNfrqHEcrq-3[rp]pUrp9XLrosFDro="9rndY/rn7;#rmC_krlb;_rl4rRrkJHG
rj_s8rj)O-riZ7%rhoalrhKIcrh'1]rgNhRrg3VKrfd>Erf@,@r/^i;qi1T6mu.(%rf-f8rf?rCrf@&=rf$i7
reg]2!/CT1L]3&-K_pE$K("9fK)UE"K`6`*L]3,/MZ/P5N;ek:O8b7?PQ$jHQiU0gp\smco)A1Yn,DbSli-/Jjo4<>i;VU4g]#k)eGdkpcMkrba8X!U_#D%H
])K,:ZMq',WrApqV>d1fTDkD\R/WENQ2ZpFOT(:>MuJV5M#N/.L&Qc)JcL?&JV!fMrdautrdO!XqgSNp
rdXourdt-&re:?+reUQ1repc9rf@&@rg!JLrg<\Urh'1`rh]Umri5t$rj)O2rjr*ArkSNNrl4rZrm(Mj
rm^r"rn@A.ro!e9roO.Drp0ROrpTjVrpp'^rqHEerqZQirqlBerr1[Pb5\C>rr2Thrquclqt^6crq??`
rp]pUrpKdOrosFFro3q8rnm_/rn%.urm:Yhrlb;Zrk\TKrk&0>rj2U.riQ1"rhTOfrh'1\rgEbPrf[8B
rf@&;reg]2re:?)rdt-"qg\Tn!.4fpI/\KlHM`!MGlE!cHN&9jI/\QnJ,=cqK)UE%L&Qo-MZ/S6O8b:@
P5^gIRf8lWTDkSaV#ICnXT#I'Zi7H5]DfSE_Z%LQbPoccd/MMnfDaM'hu;U6ir8-?l2L#Jmf)\SnG`(Z
p&=^bq>:$cr;6Hirnd[ts/5nrrqlZnr;QTmqYp>Z2Us+Xo>6tV#I%dT)P2XQi<0IOT(:>MuJS4L]2o)Jc:/uIf=`oHiArf[8JrgNhXrh07drhoatric=+
rj_s>rkJHLrl4rZrm1SkrmUl"rnRM2ro*k;roa:HrpBUPrq$-]rqHEerqZQirql]mrr)`nhZ(auVuQPj
rql]krqZQgrqHEcrpp'YrpTjRrp'LIroO.=rnm_0rn7;%rm:YhrlY5Yrk\TKrji$:rj)O+ri5sqrh9=`
rg`tSrfmDDrf6u9re^W.re(3#rdOiord4Whrc\9`rcJ-[rc.pV!,hmVDu4GOD>S/S5MDuO_T
EW1%YFT-F^GQ)jdHiAElIf=lsKDpT(M>iG4NrG1?Pl@$KSGo,ZU&LthWrB1#ZMq<3\c0AC_Z%LQb5TZb
d/MVqf`'Y)hu;X7jo4NDli-;Nn,DkVo)A@^p\sseq>U6iqtU-Hs2tAAs8N#prVl`oqYU*fp\smco`"@Z
n,DbSli-/Jk5O?=hu;I2f`'G#dJhGjb5TE[_#D%H]Df/9Z2Up*VuELkT`1P^Rf8WPOoCF@NW+_4L&Q`(
JGt#sIK"NkGQ)aaF8g4ZDuO_TDZ4MPC]J5OCMWf^qe?%Cmq;N2rb;.BrbMLLrb_XPrc%jTrc.pYrcS3a
rd"KkrdXotre(3(reLK4rf@&@rg*POrgs+^rhTOkriZ7)rj2U9rkABIrl4rZrm(Mjrmh##rn[S2ro*k=
roj@IrpKdSrp]pZrq69brqZHfqu$Hlqu5[Vb5\^Grr2fnrquZjrqZQgrqHEarposUrpB^NroX4@ro*k5
rn@A'rmLelrlkA\rkn`Mrk&0Mrgj%]rh]UnriZ7*rjMgiJ5OT(LDR/WWTT`1bdVuEju
Z2V01]DfSE_Z%XUbPoiee,Iqtg&Bn.ir8$hu;F1fDa;!ci2/faSs*V^](hD[JmE0Xo>@"UAgeaSGnfQP5^OAMZ/D1
KDpE#IK"TmG5cR[E;jbSD#S/JB`;ZDA,]s:@K'[3?iF@3?2S"!>OPbg>Q.q*?N+=/@/aU6@fBm:BDuTD
C&VrJD>S;OFT-I_HiAHmJGt3#L]321O8b=AQ2[l2L#Jn,DhUnc&4\pAXg`qYpBerVQT]s2tAJs8N#prVl`oqYplIt,>5MD%=8Z/!Q.n,?2e72?iFL5@fBsO
E;jqXG5cddIK"`qJc:K)MuJe:P5^gISGo2\V>dLoYPtm-[f4#?_>_CPbl5oedJhbsg]$+0iVqp;kPjfH
mf)_ToD\F^pAXjdq>U6fr;QZlrpBa.s0ht,rqlZnr;QTmq>U0gp\sjbo`"C[n,D\QlMfoEir7j7g]#k)
e,I\mbPoT^_#D%H])K#7Y5YL$U]-qcSc4rSP5^OAM>i8/K)U5uHiA9hFT-:ZDuOPOCAqoGAH$*<@K'X2
?2e(->5h\(=8l7s=&a;tX/iQ.q-?N+=2@K'd9AH$9AC&VoIDuOeVFT-Oa
HN&BmK)UN(M>iS8PQ$mISc5;]U].=nYPtj,])KDB_#DFSbPoiee,Itug]$+0ir8'=lMg/Ln,DkVoD\F^
p\sseq>U9jr;6HlrpBa.s1/1/rqlZnr;QTmqYp9hp\smco`"C[n,D\QlMg#Hir7j7h>Z(+eGdenbl5Z^
_Z%:K\c/u8YPtR$V>d.eSGnrUOoCC?MuJA.Jc:/uH2`!dErL%WD>n>MBDuKAA,]m8?iFC/>Q.h*=T2D$
a;j:u+qE;#!oe;Z9Vo<;oqt=8l>!>5hb*?N+=2@/a[8Ac??AC]82ME;jnWG5cddJ,Y#u
KDpf.NrG1?RJr`UT`1eeWrB4$[/RW8^Ac"Ka8X<^ci2Gnf`'_+i;Va8kl0lHm/HJQo)A:\pAXgcq#:-h
qu6NmrVQT`s2tAPs7lQlqu6Hkq>U-fpAX^`nc&%Wmf)GLk5OH@i;VO2g&BG!ci2/f`W!aR^AbS?ZMq$+
VZ*@iTDk5WPl?aCN;eV3K)U9!HN&-fErL%WDZ4ALBDuH@@K'[6?iF=0>5hY'X2h:]=/j
:B=6er_E5_pe:HUpe:HWqbI,er_NDfr_`Pjr`&ksr`9##r`];+ra5Y4raGe:rau.Drbh^Src8!^rd4Wo
rdt-)rf$i;rfd>Krh'1brhf[trj)O3rkABJrl+l\rm1Slrn7;,ro!e:roX4DrpKdSrpg![rq69brqZQi
rqlKhnGgZ2\c;I'rql]krqQKdrq-3]rp]pTrp9XHro="9rn[S,rmh"prlkA_rkeZKrjr*7riZ7#rhBC`
rgWnOrfI,_8ral(DrbVRPrcA'^rd"Kmrdt-'rf$iBre^W-rdauqrce?^rc%jR
rbDFCraPk6ra,S.r`K/"r`&kqqbd5dr_k
;uTbq5hk-?iFO6AH$?CD#SDQErL:^I/\ZqL&Qr.O8b@BQi&hYuL5k5OTDm/HJQnc&.ZpAXgcq>U6iqtp?hrqZT:s2+g8rqlZnr;QTmqYp9hpAXaao)A.Xmf)MN
kPjN@i;VO2g&BJ"ci2,e_u@IN]`,;;YPtU%U]-nbS,STMNrFt9K`6N$IK"EhF8g+WC]8#HB)Z6mN7GUB/7JK@O8+fFM9)_K_:&[ob;#XAl;uThs=8lA%?2e41
@K'mKjSn*:hYu7.ec*qpbl5Z^
_#D"G\,NW2X8]!qT`1G[QN!!FMuJJ1JGsrqH2_g_DuOVQBDuH@@/aO4>lIq+=8l5!;uTVj:]=)f9`@][
8c)$T7e]=P77I)Ah*^j'qaL0Ir^Z`Tr_*5ar_#]rm:Yprn7;-ro!e;roj@KrpTjUrq-3_rqHrnm_/rmh"prlkA^rk\THrjVm3ri?$prh07YrfmDC
re^W-rdauprc\9\rbh^Mrb)4=ra>_3r`K/#r`/qqr_`Pgr_3;aqapcXqa^WTqaLBMpI"O>k!JE%ogJdJ
qaUQTqag]Xr_*5bqbR2gr_i_qr`B)$ra,S2raGe=rbDFMrc.p\rd4Wpre:?.rf@&CrgEbYrhf[qriuI2
rk/6Hrl4r]rm:Yprn@A/ro3q=rp'LLrp]pWrq$-^rqQKgrqcNirr)`n!WW2Bs2G$;rr2lqr;QTmqYp9h
p\sjboD\7YmJcDMkl0WAi;VR3fDa7uci1ua_u@FM[f3T3Y5YQ.\&<;ohq;#X8i:B!rd9E%Q_8GbpV7f,XR7.*G66fp_q6i0:N7JfRR8,GjV9)_K_9`@fd
:]=2i;uTer&?2e72A,^*>C&W&MF8g@^IK"fsK`6r0OT(LDSc5A_VZ*atZMq<3^]).Ma8XEae,Itu
h>Z@3j8S9AlMg2MnG`%Yp&=^bq>U6iqu6NmrVQQps8U7A`W,r:rr)iorql]krqQKerq-3[rpTjProsFF
ro!e3rnIG$rm:Yhrl"fOrk/69riZ7$rh9=^rgEbIrf$i5rdauqrd"K_rbqdPrau.>ra5Y1r`];'r`&kp
qbR2cr_3;`qapZTr^QcRr^?3BrBeLjmmHt?r^H]Rr^ZrZqb$i]r_<8cr_i_pr`K/'ra#M1raYq>rbVRO
rc.p_rdFcrre^W6rfI,Irgj%^ri?%%rj)O9rkSNOrltGhrmUl$rndY4roa:Frp0RPrpp'\rqHEfrqcWk
rqucoqu-Wrs2tA_s8N#srVl`oqu6Hkq#:!dp&=L\nG_nUkl0]Cir7j7gA]\&d/M8gaSs!S]Df5;YPtO#
U]-kaR/W9JN;eV3Jc:)sGQ)X^DuOMNBDu?=?iF=0=8l8"<;o_n:]=,g9E%Q_8cD9[8,GdT7K,^D6hE^Y
6LR;@7/fXP7fGpW8H)3[9)_K_:B"&g;#XGnlJ(/@K'p=C]88OErL=_IK"fsLAm/2P5^jJT)PMa
WW'+#[Jmf;_#DFSbl5ugf)FD&hu;X7k5OTDn,DhUnc&4\p\sseqYpBkr;QZorW3'!b5]Q_rr2oqqtpBh
rqHEcrq69\rpTjQroa:Bro*k3rn.5!rm(Mbrl"fLrjVm4ri?$prh07Zrg!JDreUQ+rdXolrcJ-XrbMLG
raYq8r`oG*r`/qsr_`Yjr__8rb)4GrbqdXrcnElre(3+rf@&CrgNhZrhf[qrj)O5rk8hu;=.f)F(rbl5W]
_#CqE[/R9.VuEIjTDk,TOoC@>KDpE#I/\6eE;j_RBDuH@?iF@1=oMM%;uTYn:]=)f9`@]a8cD9[8,c!T
7K,^G6gI(G6M3_C7/fXP7fGpW8H)3[9E%Wa:&[rf;>sMn=8lD&?2e41A,^-?D>nPSFT-[eJ,Y*"NW,(>
Q2[ETU].1jYPtp.])KME`r=3]dJh\qg&Bn.j8S3?li-;NnG`%Yp&=^_qYpBkrVZWprlb>bs8N#prVlZm
q>U0gp&=R[nG_eRkl0WAi;VR3f)F+sci1r`_Z%:K[/R9.X8\glSc5#UOT(1;LAl`&HiA3fE;j\QB`;K?
@/aL3=T2>";uTVm:]=,g9)D3W8,c!W7-m;)6EWZG6i0:K7fGpW8c)-Z:B"&g;#XDmZ@3j8S9Alhg2NoD\F^q#:*gqYpHk
rW)r@s3(H;rVlZmq#:$ep&=R^nG_hSl2KlFiVq^5gA]V$d/M8g_u@FM]Df)7XT#*rT`1DZPl?^BM>i/,
I/\?hErKtUCAqiE@/aI2>Q.\&<;obo:]=)f9`%E\8H)-Y7fGj@6g-l+6LR4f6L7)=7K,dU8,GjV8cDE_
:&[rf;>sPo&?N+@3B)ZNDDZ4\UGQ*!hKDp]+NrG:BRf8uZVZ*[rZ2VB7^]).Mbl5ugeGe2$h>ZC4
kPjcGmJcVSoD\F^p\t!fqYC'irQG5as82cor;QQlq#:$eo`"C[n,DYPl2KfDi;VO2g&BCucMkuc_#D"G
\,NT1WW&^mSc4uTOoC:sAj:&[ic9)_E]8GbmU7K,^G6f16"
6N0:A5lO'm6M3_F7/fXP7fGpW8cD?]9E%Zb:]=8k<;p#!>Q/"/@fC$>C]88OFT-RbJ,Y0$MuJkL$r^#I-r^"puogAUEr^H]Rr^m)]r_*5cr_NMjr`/r"r`fA/
raPkn8KA,]m8?2dt*_Q/%0A,^-?
C]8>QG5cjfK)UT*NrG=CS,T)[WW'("Zi7]<_Z%UTci2Dmf)FS+ir8$U'doD\7Ymf)POkl0Q?hYu:/e,I\mbPo?W
^&GP@Yl:[%U]-e_QMusEM#N&+If=KhErKtUBDuE??iF7.=8l5!;#X5h:&[ca8cD9[7fGjU7.N_'6N0:@
5e95[6/=m#6iKLQ7K,dU8H)3[9)_Qa:]=2i5hn.A,^-?DZ4YTFoHjhK)UT*O8bFDSGo;_WW'.$
\Gj2@_>_XWci2Dmg]$(/iVr'?lMg5NnG`%Yp&=ddq>pKj!;lcoqu5+FeGoOIqu-NjrqQKerq-3\rpTjQ
roj@Cro!e2rn.4srlkA_rkSNErj;[*rh]Udrg3VIrf6u1rdXonrc8!UrbDFCraGe4r`K/"r_i_lr_lJ+0
@fC'?D#SDQGlE*iJc:T,OT(LDT)PMaWW'4&\Gj5A`W"$Zd/MVqg]$+0j8S6@lMg8Onc&.Zp\sshqYC3g
rr)`neGn%urr2oqrquclrqQKerq$-ZrpKdMroX4>rndY.rmh"orlP/Xrk/6=ric="rhBC^rfR2>reLK'
rd4WerbqdNrau.;ra#M,r`/qqr_NMer_!/]r^ZrWr^HfSog@G"lThgBf0]@%qaCEPr^QlWr^m)^r_3;e
r_i_qr`];+ra>_;rbMLOrcS3drdb!'rf$i=rg`t]ri#h"rjDarosFMrp]pY
rqHEf!W)WmqYpElrVlfGs4%)GrVl`oq>U0gpAXX^n,D_Rkl0]CiVqX3fDa4tbl5Z^_>_"EZi7-,U]-ka
R/W3HMZ/8-I/\?hErKnSB`;N@@/aF1=T24t;>sAj9`@Z`8H)*X7K,^M6eXm+60LS=5lO('6MNqI7/fXS
7fGsX8cDE_:]=5j;Z9et>Q/%0A,^-?D#SJSGQ*!hKDp`,OT(XHT)PMaY5Yd,\c0GE`r=3]df.kth#?:3
jo4KCmJcVSo)A@^pAt*c!;ZNirr(@HeGoOHrqucmrqZQfrq69\rpTjQroa:Arnm_0rmq(rrlb;[rkJHA
riuI(rh9=]rg*PCreLK(rd4Wfrc.pQrau.OnG`+[pAt'a!;QQjrqucoeGn/#rr2oqrquclrqHEcrq-3ZrpB^NroO.=rndY*
rmLelrl+lQrk/69riH*rrgj%TrfR29re(3"rcS3\rbh^IraYq7r`];&r`&knr_Jh*V!+qaCEQr^ZrYr_*5cr_WSnr`9#%ra5Y7rau.Irc.p[rdXp"reUQ9rg3VTrhf[srj)O9
rkSNPrm1Smrmq)*ro*kYt(dJhDi`;[ON])Jr5X8\spS,S]PO8aq6Jc:&rFT-7YD#S#F@fB^5=T2>";Z9Ml:&[fb8,c!W
7Iih+6Mj(+5c$aF6/Y*&6iKOR7fGpW9E%Zb;#XAldOp
Yl;65^])1Nc2Q,iec+D(iVqp;lMg/LnG`"Xo`=g]!;HKhrql]nqu5=LfDkjLrr)iorqcWgrq69]rpTjP
rosFBro!e2rm^qorlkAZrkABArilC%rhKI]rfmDCre19#rd4Wbrbh^Nrac"9ra#M)r`/qpr_NMer_!/[
r^QlUpd3sT`1;WOoC==K)U2tH2_d^D#S/J@K'U4>Q.Y%;uTVm:&[ca8cD3V
7JK746I7uc5itE.6iKOO7fH!Y9E%Zb;#XDm_XWci2DmgA]t.ir80@li-APnc&.]p\+[^rqcWkrquZmgAfe)rr2oprqcWirqHEarp]pTrp'LGro*k4
rn7;!rm(McrkSNFrjDa,rhf[erg*PFrepc,rdFcirc%jQrb2:>ra,S.r`/qrr_NMfr_!/]r^QcRpd=C7
qa&RoR6^a;ksG/4r^H]Rr^m)^r_rbMLPrce?hrdk',rfI,Frh'1eriQ1-rk&0F
rlY5crmLf!rn[S4roa:GrpKdTrq$6cpAjseq>U9jr;6KIs4@;Mrr2ipqYpi&)HiA3fE;jYPB)Z3;?2e%,<;obo:]=&e9)_B\7fGjU7/K@9
6N09q5aF\760:N56iKLQ7K,dU8H)6\9`@ie;Z9Yp>5he+@/ad;C]8;PG5cjfJGtE)O8bCCTDk\dX8]L*
])KMEa8X<^dJhhuh#?72k5OZFmJcVSoE"[Z!;?Efrql]mqu5=LgAh0Orr)iorqcWirq69^rp]pRroj@C
ro!e2rn.4srlb;\rkABArj)O&rhBC_rf[8?reLK'rd+Qcrbh^Lrac"9r`oG)r_renr_NMdr^m)Zr^HfS
pd=:4r^"doQ9bF8k!Jr4r^?`Sr^ZrZr_*5dr_`Ynr`K/(ra>_9rb;@LrcJ-crdb!'rf-o?rgj%`ri,n&
rj_sArl4r]rm:YsrnRM2roO.Crp9XRrpp0`o`4[aq>U9jr;QZorn@D+s8N#srVl]nqYp5hV&;uTYn:]=#d8cD6Z
7K,^M6g6r:6-VZ\5lO(36Mj.L7/fXS8,c*Z9E%`d;>sMn=T2P(?iFU8C&W#LF8gF`If>*$N;et=SGo5]
W;a($\,O,@`W"$Zd/MVqg]$.1jSnBBm/HMRo)\OW!;6?erqcWkrr)iqgAfn,rr2oqrql]krqQKbrpp'W
rp9XJroF(9rn@A%rm1Scrl"fLrjMg1ri#girgNhJrepc0rdFcirc8!Trb2:@ra5Y.r`B(sr_WShr_!/\
r^ZrVr^?`Qj$N`2bs7R[r^#R2r^6ZQr^HfVr^m)]r_EGhr_i_tr`fA/raYq@rb_XTrcnEjre:?/rfI,J
rh9=irilC2rk8U9jrVlfMs4[MPrr2lqqu6Hkq#9pb
o)A+Wli-)Hj8Rp7gA]Y%ci2&c`;[FK[f3K0VZ*4eRJrC]8>QG5cmgKDpc-OT([ITDk_e
YPts/]`,kKb5T`dec+8$hYuR7kPjfHn,DkYo^i.UrqQKgrql]nrr1XOgAh0Orr)inrqZQfrq-3[rpTjO
roX4>rndY-rm^qmrlP/Xrk&0:ricU-fo`"C[n,DVOk5OB>
h>Z(+eGdbmao93W])K)9YPt?sT)P,VNrFn7KDp5sFoH@ZC]7rF@K'O2=T2>";>sAj9`@W_8H)*X7/K@6
6H;?Q5itE46i0:N7fGpW8cDE_:B",ilJ12B)ZTFE;k%[HiAZsM#NG6R/W`WV#IRs[/RZ9_u@aV
cMl>mg&Bh,ir8-?lMg8OncACT!;-9brqZQjrr)iqgAfn,rr2oqrqcWhrqHEarpg!VrosFEro3q5rn.5!
rltG_rkeZGrj;[-rhKIarg3VEreUQ*rd+QdrbqdNral(:r`oG)r`/qor_EGdr^m)[r^QlTqa9g=^-IH=
mm@"@qaCEQr^ZrZr_3;dr_WSor`K/)ra>_:rbDFNrcJ-crdt-*rf6uErgj%`riZ7,rjr*GrlG)`rmUl!
rn[S5roX4ErpTjW!VH!ao`"Uaq>U6irVlfMs4[MPrr2lqqYp9hp\sganc&"Vl2KiEir7d5f`'A!bl5Z^
_Z%.GZi7*+U]-h`QMupDM#N#*HN&'dDuOMNAc?*:>lIk)[+])KSGa8X<^e,J#!h>ZF5
k5OWEn,DkYo^i.UrqHEfrqcWmrr1XOgAh0Orr)imrqQKerq-3[rpKdMroX4=rn[S+rmUkjrl>#Srjr*8
riQ0org`tRrf-o4rdk&orcJ-Xrb;@Bra>_1r`K/"r_WShr_3;_r^d#Xr^?WNmm=`RLHt;pr^6QNr^QlW
r^m)_r_EGhr`/r"r`oG1ral(CrbqdXrd"KoreLK4rg*PSrhBCorj2U8rk\TRrlkAjrn.5+ro*kZ(+e,ISja8WpS\c/o6Xo>'o
SGnfQNW+\3JGsinFT-4XC&VZB@/aF1=T2>";#X5h9`@W_8H)*R6gm@U5_hVn6MNqI7fGpW8cDE_:B")h
lJ.1Ac?ECDuOkXH2`?nL]3;4Q2[_IRbl6)jf`'_+iVqs$Mr^ZrZr_3;dr_WSor`K/)ra>_:
rb;@MrcJ-brdb!'rf-oBrg`t^riQ1+rji$Erl4r]rmUl!rn[S4roO.DrpKdT!V>m_oD\L`q>U6irVlfM
s4[MPrr2lqqYp9hp\sd`nc%tUl2KiEiVq[4f`'A!bl5Z^_>_"EZMq!*UAg\^Q2ZdBLAl`&H2_pbDuOJM
AH$!9>lIk)6G>^?5jq&76iKRS8,c*Z9`@fd;#XJo=T2S)@/aa:C&W&MFT-Rb
JGt?'NW,4BSGo8^Xo>[+\c0GE`r=3]e,J#!h>ZC4jo4NDmf)\VoCDtRrqHEfrqcWmrr1XOgAh0Orr)im
rqQKerq-3[rpKdMroX4=rn[S+rmUkjrl>#Srjr*8riQ0org`tRrf-o4rdk&orcJ-Xrb;@Bra>_1r`K/"
r_WShr_3;_r^d#Xr^?WNmm=`RLHt;pr^6QNr^QlWr^m)_r_EGhr`/r"r`oG1ral(CrbqdXrd"KoreLK4
rg*PSrhBCorj2U8rk\TRrlkAjrn.5+ro*kZ(+e,IVka8WpS])K)9Y5Y0pSc4uTNW+_4Jc9roFT-4XC&VZB@/aF1=T2>";#X5h
9`@W_8H)*X7/K@?6G>^?5jq&=6i0:N7fGpW8cDE_:B")hlJ.1Ac?ECDuOkXH2`BoL]3;4Qi_LSc2Q2kf`'_+iVqs_:rbDFNrcJ-crdt-*rf6uErgj%`riZ7,
rjr*GrlG)`rmUl!rn[S5roX4ErpTjW!VH!ao`"Uaq>U6irVlfMs4[MPrr2lqqu6Ejp\sganc&"VlMfrF
ir7d5f`'D"cMkrb_u@7H[/R9.V#HtbR/W-FM>i/,HiA0eE;jYPB)Z6<>lIk)sSp=T2S)@K'mZF5kPjcGn,DkYo^i.UrqHEfrql]nrr1XOgAh0Orr)inrqcWhrq-3\rpTjProa:@rn[S,
rmh"orlP/Wrk&0;ricU9jrVlfMs4[MPrr2lqr;QQlq#9pbo)A+Wm/H5JjSn'9gA]\&d/M5f
`W!RM\,NZ3WW&XkSGnZMN;eS2If=WlF8g%UB`;N@?iF:/=T24t;#X5h9)_B\8,bsV7/fR66N09q5aF\7
6/t<26iKLQ7K,gV8cD?]:B")h;Z9et>Q/"/A,^0@D>nVUGlE0kLAm/2OoCmMUAh.kZ2V63^&H"Mb5Tce
f)FG'hu;^9kl0rJn,DkYo^i.UrqQKhrqucorr1XOgAh0Orr)iorqcWirq69^rp]pRroj@Cro!e2rn.4s
rlb;\rkABArj)O&rhBC_rf[8?reLK'rd+Qcrbh^Lrac"9r`oG)r_renr_NMdr^m)Zr^HfSpd=:4r^"do
Q9bF8k!Jr4r^?`Sr^ZrZr_*5dr_`Ynr`K/(ra>_9rb;@LrcJ-crdb!'rf-o?rgj%`ri,n&rj_sArl4r]
rm:YsrnRM2roO.Crp9XRrpp0`o`4[aq>U9jr;QZorn@D(s8N#sr;QQlq>U*eoD\7YmJcALk5O<5hM#;>sAj9`@Z`8H)*X7K,^P6g6r:
6-VZ\5lO(36N0@O7/fXS7fGsX9)_N`:]=8k<;p)#>lJ.1B)ZTFE;k%[HiAQpM>iS8Pl@dOp[/RZ9
_#DCRbl6#hg&Be+i;Vm_=rbVRQrcnEirdk',rfI,Frh'1driH+,
rk&0FrlP/brmLf"rn[S4roj@HrpKdUrq$6bp&OgcqYpBkr;6KIs4@;Mrr2ipqu6Hkp\sjbnc&"Vli-,I
ir7g6gA]S#ci2,e_>_+H[f3H/VuE@gQi<-HN;eG.IK"NkE;j\QC&VQ??N+1.Q.t.@K(!?D>nMRH2`9lK)U`.OoC^HT`1kgY5Ym/]`,bH
bPoiee,J)#hYuO6kl0oIn,DkVoE"^\!;HKhrql]mqu5=LfDkjLrr)iorqcWgrq69]rpTjProsFBro!e2
rm^qorlkAZrkABArilC%rhKI]rfmDCre:?%rd4Wbrbh^Nrac"9ra#M)r`/qpr_NMer_!/[r^QlUpd`X8]C'
]DfVF`;\$\dJh\qh>ZC4jSnHDm/HJQoD\C`p\+[^rqcWkrr)`ngAfe)rr2oqrquclrqHEcrq-3ZrpB^N
roO.=rndY*rmLelrl+lQrk/69riH*rrgj%TrfR29re(3"rcS3\rbh^IraYq7r`];&r`&knr_Jh*V!+qaCEQr^ZrYr_*5cr_WSnr`9#%ra5Y7rau.Irc.p[rdXp"reUQ9rg3VT
rhf[srj)O9rkSNPrm1Smrmq)*ro*k";#X5h
9`@W_8H)-Y7K,^J6et)g5c[0+6M3_F7/fXS8,c'Y8cDE_:B")hlJ+0AH$9ADuOkXH2`$Kr^HfUr^d#[r_!/ar_WSlr`B)&ra,S5rau.Erc%jZ
rd+QqreUQ6rg*PRrh9=lriuI4rkSNPrlY5ermq)'ro!e:roa:IrpTjWrq??c!VlEiq"t!grRCkss82co
r;QNkq#:!do)A+WmJc>Kjo46q)df.Jia8WpS\c/r7Y5Y3qT)P,VOT(.:KDp8tGQ)X^D#S,IA,]m8
>lIk);Z9Pm:]=&e9)_B\7fGjU7/0.'6N0:75dsJm=T2P(@/a[8
BDu`HErL:^I/\ctM>iV9R/W]VU].FqZi7N7_>_IRbl6&ifDaS)iVqsrndY.rmh"orlP/Xrk/6=ric="rhBC^rfR2>reLK'rd4We
rbqdNrau.;ra#M,r`/qqr_NMer_!/]r^ZrWr^HfSog@G"lThgBf0]@%qaCEPr^QlWr^m)^r_3;er_i_q
r`];+ra>_;rbMLOrcS3drdb!'rf$i=rg`t]ri#h"rjDarosFMrp]pYrqHEf
!W)WmqYpElrVlfGs4%)Jrr2lqr;QQlq#:$eo`"C[n,DVOkPjN@hu;@/f)F%qbPoN\^AbYAZMpm'V#Htb
Pl?aCMZ/2+IK"KjE;j\QC&VT@?N+1.=8l1u;#X5h9`@Z`8H)-Y7fGgK6eXm(61I4L5lO($6Mj.I7/f[T
8,c'Y9)_K_:B")h<;otu>Q/"/@fC*@D>nMRGlE*iJc:Q+O8bCCT)PMaWrB='\Gj5A`r=0\d/MVqg]$+0
j8S6@lMg8Oo)A:\p\sshqYC3grqucorr1FIeGoOIqu-NjrqQKerq-3\rpTjQroj@Cro!e2rn.4srlkA_
rkSNErj;[*rh]Udrg3VIrf6u1rdXonrc8!UrbDFCraGe4r`K/"r_i_lr__.I\Gi`3WrAdmSGniRO8at7KDp?!FoHF\DZ4;JA,]j7>5hV&U3kqtgBjrr)`neGn%u
rr2fnrqucmrqcWfrq-3[rpTjProsFBro!e3rmh"qrltG\rkJHEriuI(rh]UcrgEbLrepc0rdXomrcJ-X
rbDFEraGe3r`T5%r_i_lr_EGcr_!/\r^QcRr^?EHi'R!#rBS@fog.:uqa:6Kr^H]Rr^d#[r_*5cr_WSl
r`B)&ra#M3ral(DrbqdXrd"Kmre:?0rfd>Krgs+cri?%'rk&0Frl"f\rmC_qrn[S3ro="Brp9XQrpg![
rq??frqc`oquHZorVQTDs3^lGrr2lqr;QTmqYp6gp&=O]nG_hSlMflDiVqa6f)F.tci1ua_Z%:KZi7-,
WW&RiS,S]PNrFk6K)U,rG5cL\C]7uGA,]m8>lIk);uT\o:]=)f9)_EZ8,c!W7.N^p6N'0h5h&-n6i0:K
7fGpW8cDB^:&[rf;>sMn=T2P(@/a[8BDu]GEW1.\HiAWrM#NG6Q2[9PT`1qiY5Yd,^Ac"Ka8XEae,Iqt
hu;X7jSnHDm/HMRo)A=]p\t$gqZ6Wm!;uiprr1=FcN!nCrr)iorqcWgrq??`rp]pSrp0RGro3q7rn7;$
rm:Yfrl+lOrji$7riZ6qrh'1ZrfI,;reCE%rd+Qdrc%jPrb)4_t*e,IVka8WsT]Df5;YPtI!UAgb`Pl?aCMZ/2+IK"KjEW0kTCAq`B@/aI2
=T2>";Z9Ml:B!rd9)_B\8,c!W7JfLG6eXm*62!V#5kRFp6Mj.F7/fXS7fGpW8cD?]9`@cc;#XAlnPSGlE*iJc:Q+O8bCCT)PJ`VuEn![Jmf;_Z%XUc2Q2kfDaS)i;Vg:kPjlJnG`"Xp&=^b
q#:-hqZ6Zo!<)fodJqMlrr2oqrqucmrqZQgrq??^rp]pUrosFEro3q5rn7;$rm:Yerl"fMrj_s5ri5so
rh'1Vrf[8@re19$rd=]drc%jRral(=ra5Y/r`B)!r_`Ykr_EGcr_!/]r^QcRr^?L$r^#I-r^"pu
ogAUEr^H]Rr^m)]r_*5cr_NMjr`/r"r`fA/raPkrVl`oqYp9hp\sganc&"Vli-/J
jo43;h#?"+dJhGjb5T3U]`,D>Yl:[%V#HqaQi<-HMuJG0J,X`mFT-4XC]7rF@fBa6>Q.b(<;obo:]=)f
9`@Z`8H)-V7fGjU7.N_&6L[>@61R;?6-DUf6iKLQ7JfRR8,c'Y9)_K_:&[rf;Z9Yp=T2P(?iFO6BDu]G
DuOkXH2`_#DLUc2Q,ig&Be+i;Vj;kl0oIn,DnWo`"Uaq>U6fquQcp
!<(+@bQ%S@rr)iorqcWirqQKbrpp'WrpKdNroa:>rndY/rm^qorlkA[rkJHDrj)O*rhoafrgNhOrf-o5
re(2trcnE`rb_XKrau.;ra#M,r`9"sqb[8dr_*5^r^d#Yr^QcRr^?EHha6g!mm5#]qa:6Kr^H]Rr^ZrY
r^m)^r_<8dr`&ktr`];,ra>_;rb;@KrcA'_rd=]treUQ5rg!JOrh'1friQ1*rjr*Drl"f[rm:YornIG/
ro*k>rp'LNrpTjWrq-3brqZQirquco!WN&urlb>bs8N#prVlZmq>U0gp&=R[nG_eRkl0WAi;VR3f)F+s
ci1r`_Z%:K[/R9.X8\glSc5#UOT(1;LAl`&HiA3fE;j\QB`;K?@/aL3=T2>";uTVm:]=,g9)D3W8,c!W
7-m;)6EWZG6i0:K7fGpW8c)-Z:B"&g;#XDmZ@3j8S9Alhg2NoD\F^q#:*gqYpHkrW)r@s3(HArqlZkqu6Hkp\smcoD\7Y
mJcGNk5OB>hu;=.f)F(rbl5W]_#CqE[/R9.VuEIjTDk,TOoC@>KDpE#I/\6eE;j_RBDuH@?iF@1=oMM%
;uTYn:]=)f9`@]a8cD9[8,c!T7K,^G6gI(G6M3_C7/fXP7fGpW8H)3[9E%Wa:&[rf;>sMn=8lD&?2e41
A,^-?D>nPSFT-[eJ,Y*"NW,(>Q2[ETU].1jYPtp.])KME`r=3]dJh\qg&Bn.j8S3?li-;NnG`%Yp&=^_
qYpBkrVZWprlb>bs8N#prVl`oqu6Hkq#:!do`"@Zmf)VQkPjQAi;VO2f`'D"cMkrb`;[IL\,N]4X8]!q
U&LM[Q2ZjDM#N&+J,X]lFT-4XC]7uGA,]j7>Q.e)sDk:B!rd9)_E]8GbpV7f,XR7/0.86F9)S
6i0:N7JfRR8,c'Y8cD?]9`@cc;#X>k;uTer=oM\*?iFR7BDu]GDuOkXGlE3lKDp]+O8bCCRf9#[VZ*Xq
ZMqB5^&GtLao9TbeGe,"h#?72jSn?AmJcSRnG`(ZpAXjdqYpBkr;QZmrW)r@s2b6>rr2lqr;QTmqYp9h
pAXaanc&%Wn,DPMjo49=hu;@/f)F%qbl5]__#CtF[JmB/WW&[lT)P,VP5^F>L]2l(IK"HiErL"VCAqlF
@K'X5>lIh(R/W]VU].7lYPts/]DfVFaSsE_d/MVqgA^"/ir8*>
kl1&MnG_tWp&=^bq#:-hqu6NmrVlcss8U7A`W,r:rr)iorql]krqQKerq-3[rpTjProsFFro!e3rnIG$
rm:Yhrl"fOrk/69riZ7$rh9=^rgEbIrf$i5rdauqrd"K_rbqdPrau.>ra5Y1r`];'r`&kpqbR2cr_3;`
qapZTr^QcRr^?3BrBeLjmmHt?r^H]Rr^ZrZqb$i]r_<8cr_i_pr`K/'ra#M1raYq>rbVROrc.p_rdFcr
re^W6rfI,Irgj%^ri?%%rj)O9rkSNOrltGhrmUl$rndY4roa:Frp0RPrpp'\rqHEfrqcWkrqucoqu-Wr
s2tA\s8N#prVl`oqYp5hS%<;ohq;#X5h:&@T_9)_BY8,c!T7J0(G6iB?k6N0@C7/fXP
7fGpT8Gc$Y9E%Zb:]=2i;uTerlJ+0A,^*>C&W&MErL4\IK"fsL&R)2OoCXFSc5>^V>d[tZi7H5
^])1NaSsNbe,Iqth>Z@3j8SOnG`%Yo`"Xbq>U6fr;QZlrW3'!b5]H\rr2fnrquclrqZQgrq69_
rpg!WrpB^MroO.>rnm_/rmh"prlkA^rk\THrjVm3ri?$prh07YrfmDCre^W-rdauprc\9\rbh^Mrb)4=
ra>_3r`K/#r`/qqr_`Pgr_3;aqapcXqa^WTqaLBMpI"O>k!JE%ogJdJqaUQTqag]Xr_*5bqbR2gr_i_q
r`B)$ra,S2raGe=rbDFMrc.p\rd4Wpre:?.rf@&CrgEbYrhf[qriuI2rk/6Hrl4r]rm:Yprn@A/ro3q=
rp'LLrp]pWrq$-^rqQKgrqcNirr)`n!WW2Bs2+g8rqlZkqu6Hkp\smco`"@Zmf)VQkl0ZBi;VU4gA]Y%
d/M8ga8WmR]`,D>Yl:^&VZ*7fS,S`QOT(1;LAl`&I/\EjEW0nUD>n2IAH$!9?iF=0>5hV&_9rb)4IrbqdU
rd"Kjrdb!&repc;rg*PQrh07fri?%&rjVm=rkSNRrlb;frmh#$rndY4roO.CrpB^Rrp]pZrq69bqtg\V;_Z0W7qu-Nlrql]krqQKdrq69]rp]pTrosFFro="9rnRM*rmLekrlb;YrkJHErj2U-ri?$n
rh'1Zrfd>Brepc.rdaurrc\9^rbqdPrb2:BraGe5ra#M,r`K/#r_reoqb[8er_\r^m)[ogf!N!(H9D
mmQ_8qaU6Kr^d#[pe1T\r_E>er_i_or`9##r`];,ra5Y5ral(BrbVRPrcA'^rdFcrre(3.rf@&BrgWnZ
rhKInric=-rk&0Erkn`Yrm1Slrn.5)ro!e9roX4ErpKdTrpp']rqHEerqcWkrqucoqu6Ekb5]?Yrr2]k
rquclrqZQgrq??_rpp'Wrp9XKroX4=rndY/rmh"rrm1S`rkn`Mrj_s7ric="rhTOcrg3VJrf@&8re19$
rd=]hrc8!Wrb_XLrac";ra5Y2r`fA(r`/qsr_r\kqbR2cr_3;`oh#-RrC6lY8+K.<7I3MC8,GjS8c)-Z
9`@c`:]=2i;>sMn<;ons=T2M'?N+=2@fBp;CAr&KE;jnWGQ*!hJGt9%M>iS8PQ$pJTDkVbW;a""Zi7K6
^]).M`r=<`df.erg]$(/iVr!=kl0rJn,DkVoD\I_p\t!fqYpBhrVQTis2tASs8N#prVl`oqYp9hp\sjb
oD\7Yn,D\QlMfoEir7j7g&BS%dJhDiaSs*V^](eC[/R9.WW&^mT`1G[Q2ZmEN;eY4JGsurHiA-dEW0nU
CAqoGB)Z6<@/aL3>Q.h*=T2>"<;oep;#=&f:B!ub9`%K^8cVHS8`iS:8c)-Z9DD3[:&[oe:]!uf;Z9Vo
3OT(OERf8uZV#ICnYPtp.])KJD_u@aVc2Q,i
ec+8$hu;X7jo4QEm/HJQnG`%Yp&=^bq>U6fr;QZlrq?B7s1JC2rqlZnr;QQlq>U0gpAX^`o)A.XmJcGN
kPjTBiVq[4g&BP$d/M8gaSs$T^&GSAZMq!*WW&[lTDk>ZPQ$[CN;eS2K)U9!H2`!dErL"VC]8&IAc?3=
@/aO4>lIt,=T2D$$
>Q.q-?iFI4A,^'=C&VrJDuOeVG5cddJ,Y*"LAm/2O8b@BS,T&ZU].7lY5Ya+\c0;A_>_OTbPolfec+8$
h>ZC4jSn?Ali-;NnG`"Xp&=[aq#:*gqYU3irVQTfs2tAPs7lQlqu6Hkq>U-fpAX^`nc&%Wmf)GLk5OH@
i;VO2g&BG!ci2/f`W!aR^AbS?ZMq$+VZ*@iTDk5WPl?aCN;eV3K)U9!HN&-fErL%WDZ4ALBDuH@@K'[6
?iF=0>5hY'X2h:]=/j:B=6er_E5_pe:HUpe:HWqbI,er_NDfr_`Pjr`&ksr`9##r`];+
ra5Y4raGe:rau.Drbh^Src8!^rd4Wordt-)rf$i;rfd>Krh'1brhf[trj)O3rkABJrl+l\rm1Slrn7;,
ro!e:roX4DrpKdSrpg![rq69brqZQirqlKhnGgZ2\c;[.qu-Nlrql]krqQKerq??`rpg!Vrp9XLroj@@
rnm_2rn.5"rm1Sfrl>#TrkABBrj;[.ri5sorh07\rgEbJrf6u9re(3$rdXomrc\9]rc%jRrbMLGral(=
ra>_4ra,J+r`];'r`B)"r`&kqr_i\lr)*Gih,!oEpeh#gr_reqr`9#"r`K&$r`fA.ra5Y4raYq=rb)4G
rb_XRrc8!]rd"Kmrdk'$repc9rfR2Jrg`t\rh]Uoric=.rji$BrkeZTrlkAfrm^r"rn[S3ro3q@rp'LL
rpTjWrq-3`rqHEerqcWkrqucoqu6*bb5]$Pq#:9jqtpBgrqQKerq69^rp]pTrp0RJroO.>rnm_0rn%.u
rm1Sdrl>#Srk8Q.q-?Me.0A,^'=BDuWEC]88OErL1[GlE$g
If=ruLAm#.O8b@BQN!HSU&LkeX8]=%ZMqE6^&GkIa8X9]ci2DmfDaP(hu;X7jo4NDli->OnG`%Yp&=^b
q#:*gqtpU0gpAX^`oD\7YmJcGNkPjTBiVqa6gA]_'dJhJkbl5Q[_>_1J
[f3W4YPtR$V>d.eSGnlSP5^OAMuJP3Jc:/uIK"NkG5cR^E;jbSD#S/JBDuKA@fBg8?iFI4?N+4/>Q.h'
=9)G#=8l7klJ%.@/aO4@K'a8Ac??AC&VrJDZ4VSF8g@^H2`6kJ,Y#uM#N>3
O8b=AQiOnG`%Yp&=[aq#:*gqYU3i
rVQT]s2tAJs8N#mrVQKkqYp6gpAXaanc&%Wn,DYPl2KlFiVqa6h#>q)eGdenbl5]__u@FM])K,:Yl:d(
WrAalTDkA[Q2ZsGO8b%9L]2r*JGsurHiA3fF8KqUDZ4JOC&VfFBDuE?@fBg8@/F=1?3":/?1M4g>4l,!
?2It-?i+71@K'a8A,^-?B`;`FD#S;KE;jtYG5cjfIK"crKDpZ*MZ/\9P5^aGSGo/[UAh1lXT#I'[Jmc:
^]).Ma8X<^ci2DmfDaS)hYuL5kPj`Fli-APnG_tWp&=[ap\XgdqtU-erpBa.s0Mb&rqlZnr;QTmqYp9h
p\smcoD\=[n,DbSli-/JjSn-;hu;@/fDa7ud/M8gaSs$T^AbbD[/R?0Y5YC!V#I"cS,ScRPQ$XBN;e_6
K`6T&J,XipH2`!dFT-=[DuOYRD#S5LB`;ZDB)Z?_4qd/_soj7W*ra5Y4raGe9qdf\<
rb)4DrbMLLrbh^Rrc8![rc\9crd=]prdt-®]6rf@&Brg3VRrh'1cri#h!riuI0rk&0Drk\TTrlb;f
rmUkurn@A/ro3qDrf@&9reLK+rdaus
rd=]jrce?`rc.pVrbqdQrbVRLrb2:Drau.?!+Yq:raO\lqdTP7qdf\nGPE;jeTEW1%YFoHUaH2`6kJ,XutKDpT(L]3;4
O8b:@QN!Z=2iVr!=kl0oImf)\SnG`(Zp&=^b
q>:$cr;QZlroF+%s/Q+rrr2lqr;6BjqYp9hpAXaaoD\:Zn,D_Rli-,IjSn0iG4NrG.>P5^gIRf8oXT`1bdVuEgtYPtg+\Gj,>^])+L`r=*Zci2>ke,J&"
h#?72iVqp;kPjfHmJHDPoD\C]p\sseq>U6iqu6NmrVQTNs2tA>s8N#jrVl`oqYU*fp\smco`"@Zn,DbS
li-/JkPjK?i;VX5gA]_'e,I_nc2Poc`;[UP^](kE\Gii6Yl:d(WrAgnUAgeaSc5&VQi<0IOT(=?N;e_6
M#N,-K`6T&JGXiqI/nWqI!kp?rd+Hek'6lNqg/6grd=]nrdXfqrdt-%re:?-reg]6rf@&@rf[8IrgNhW
rh'1arhTOnriH+'rj2U5rk&0ErkeZQrlb;crm:Ynrn%/'rnm_6ro3q?rosFJrpKdSrp]pZrq69brqZHf
qu$?iqu5IPb5\C>q#:0hrquZjrqcWhrq??arq$-[rpTjSrp0RJroX4@ro*k5rnIG*rmUkorm1Sdrl>#U
rkSNHrjr*9riuI+ri5srrhf[grh'1[rgEbPrg!JFrfI,>repc5reUQ.re:?)rdk-$!J,h$J,XutJ,Xoo
IIDR_IJ\KmJGt&tJc:9#K`6])LAm#.M>iG4NrG+=OoCXFQiU0gp\sgaoD\=[nG_hSli-,Ik5OH@i;VU4h>Z%*ec*tqd/M8gao93W_Z%=L]Df;=[/RC#
VuELhT`1M]S,ScRQ2[!HOT(=?NrG":MuJV5L]E22LPPk`re10$rdsTiqh"g"qh4s'reLK/reg]5rf$i:
rf@&?rfd>Hrg3VRrgiqZrhTOkri?%$rilC/rjVm=rkJHKrkn`WrlkAgrmC_prn%/*rnm_5roF(@roj@I
rpKdTrpp'[rq-3arqQKgrqcWkrquQiqu5@Mb5\(5rr2Thrquclqt^6crq??`rpg!WrpTjQrp'LIroO.>
ro!e4rnIG*rm^qprm1SerlP/Zrk\TKrk8<@rjDa2rilC)riH*srh]Uhrh07_rgs+Xrg<\OrfmDGrf[8B
!0@&=rf6l8rf$<(qi(N6qi:Z:qiLf?rfd>Grg3VPrgNhXrh'1_rhKIhrhoasriQ1(rj)O3rj_s@rkJHK
rl4rYrlb;ermLeqrn7;*rndY4ro=">rosFJrp9XQrp]pWrq-3_rqHEfqtg3fqu-Ekec3elT)\Tbqu-Nl
qtpBhrqQKdrq69^rpp'XrpTjRrp9XJroX4@ro!e4rnRM+rmq(srm:Yhrlb;\rl"fPrkJHErji$9rj2U.
riZ7$ri,morhTOfrh07^rgj%XrgNhSrg*VN!LB&NQ2$R*Onb.>Q2[*KQid@k
WW&stY5Y[)Zi7B3\c08@^])(K`;[dUbPoccd/MJmf)FA%h#?10i;Vg:k5OTDm/HDOn,DhUo)A7[p&=^b
q"speqtpU0gp\sjbo`"I]nGD\RlMg#HkPjN@ir7j7hYu7.fDa7u
df.Slc2Piaa8WsT_#D+J]DfA?\,N`5ZMq',Xo>@"WW&doV#I+fT_kA\SH,/\S=KSJrgN_Prg@qj@AN
qjRMRrg`tYrh'(\rhBCfrhf[ori?%#ric=+rj2U5rji$?rkJHKrkeZTrlY5brm1SkrmUkurn@A.rnm_6
ro="@rosFIrpTaRrq$-]rq69brqQKgrqcWkrquQiqu5%Db5[b,rr2Thrquclqt^-`rq??`rposTrp9XM
roj@DroF(;ro!e4rn@A'rmh"rrm:Yjrlb;_rl4rTrk\TKrk/6Arj_s8rj;[0rilC)riQ1#ri5srrh][l
!MuXlV#-qdUALYQT`1Y^UAgqeV#I4iVZ*OnWW&stXo>L&Yl:p,Zi7B3\Gj)=]`,\F_>_@O`r='YbPoie
dJhSnec+5#gA]t.hu;U6jSn<@kl0oImJHAOo)A:YpAXgcq>:$cr;6HirlkDbs-ibl5]_`r_7L^AbbD])K5=
[JmQ4Zi76/Yl:j*XT5F'XK;E%ri5jpk,83Xql9XrriH+$ric=*riuI/rj;[4rj_sic
O8o4Yq#13iqtpBhrqZQgrqHEcrq-3\rpfmSrp9XLroa:CroF(;ro!e4rnIG*rmq(trmLelrm(MerlY5[
rl"fQrkSNJrkABDrjr*>rjVm8rj;[1!3lR0Z2:d&YNE"eYP>@$Z2V'.[/RK4\,Nr;])K>@^AbnH_#D4M
`;[dUb5TT`cMl/hdJhVof)F>$g]$(/hu;U6jSn9?kPjcGm/-8Nnc&+Yo`"O_p\sseq>U6iqtpi;VU4h>Z.-f`'M%e,Iemci22g
bl5``aSs3Y_u@OM_#D+J^AbbF]DT;?])K8>\E::"\Gj&<])K>=]_fG?_#D4M_u@[Ta8X3[bl5laci2>k
e,Itug&B_)h>Z=2i;Vd9jo4HBl2L#Jm/HGPn,DhUoD\C]p&=^bq#:*dqYpBerV6B0s2tA#s7QBgrVl`l
qu6Hhq>U-fpAXaaoD\=Xn,D_Rm/H8Kkl0`DjSn0drm:Ylrm^qtrmq)&rnIG/rnm_5ro*k;roO.ArosFJrp9XQrp]pWrpp'[rq-3`rqHEe
q"jmcqu-Ek])TqQJcG]Krr2]krquZjrqcNfqtL*`rq-3\qsaURrpKdOrp'LIroa:CroF(;ro!e5rndY1
rnRM+rn.5$rm^qrrmLenrm:Mf!RK*kcMPlcbi[+Gbl5lacMPred/MGldf._peGe%ufDaJ&h#?./hYuF3
i;V^7jSn9?kPj`FlMg,HmecMQoD\CZpAXgcq>:$fqtpU0gp\sjb
o`"I]o)A1Vn,D_Rm/H;Ll2KoGjo4??j8S$:i;VX5h>Z4/g]#n*f`'M"ec+(sdfIqHrmL\krm1Sjm*G[X
rm1SjrmCVkrmUbormh#"rn.5'rnIG-rn[S2ro!e7ro="=roO.CrosFIrp9XOqsXOSrpp'[rq-3_rqHEe
rqZHfrqlKgo)?,ub5[%mqZ$?iq#13iqtpBhrqZQgrqHEcrq69_rq$-[rp]gRrpB^Orp'LHroa:CroF(=
ro3h5rnm_3rn[S/rn@A)rn.2$!S>s&f)+"seE56WeGe"qf)F;#f`'S'gAB\)hYuF0i;Va8j8S-=k5OQC
kl0lHli-;Nn,)VRo)A7[o`"O_pAXgcq#:*gqYpBhr:p6criuLGs+14?s8N#grVl`oqtp6hq>U0dp\smc
o`"F\nc&%Tn,DbSm/H>MlMg&Ikl0cEk5OH@iqq^6i:u10h>uKirn[8&n([Egrn[S1qqq;/ro*b6roF(?
roa:ErosFIrp0RNrpKdSqsaUTrq$-]qtC$`rqQKgqtg