# HG changeset patch # User Shoshi TAMAKI # Date 1316889736 -32400 # Node ID f542388881a9b2847e5e20e0047a1c6516f3e2c1 # Parent bd7d39a4e57f79d0a8361cdbbf07900312001c27 added slides beta diff -r bd7d39a4e57f -r f542388881a9 jssst-shoshi.pdf Binary file jssst-shoshi.pdf has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/fig/AVL.png Binary file jssst2011/fig/AVL.png has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/fig/CMSDESC.png Binary file jssst2011/fig/CMSDESC.png has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/fig/NDT01.png Binary file jssst2011/fig/NDT01.png has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/fig/NDTAVL01.png Binary file jssst2011/fig/NDTAVL01.png has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/fig/NDTAVL02.png Binary file jssst2011/fig/NDTAVL02.png has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/fig/cluster.png Binary file jssst2011/fig/cluster.png has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/fig/treeexample.png Binary file jssst2011/fig/treeexample.png has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/graffle/avl.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/graffle/avl.graffle Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,1767 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle + 138.30.0.155892 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559, 783}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2011-09-25 02:03:31 +0900 + Creator + shoshi + DisplayScale + 1 0/72 in = 1 0/72 in + GraphDocumentVersion + 6 + GraphicsList + + + Bounds + {{354.393, 268}, {129, 20}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 76 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs26 \cf0 \'83\'6f\'83\'89\'83\'93\'83\'58\'82\'aa\'8e\'e6\'82\'ea\'82\'c4\'82\'a2\'82\'e9} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{36.6963, 268}, {142, 20}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuProN-W3 + Size + 12 + + ID + 75 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs26 \cf0 \'83\'6f\'83\'89\'83\'93\'83\'58\'82\'aa\'8e\'e6\'82\'ea\'82\'c4\'82\'a2\'82\'c8\'82\'a2} + VerticalPad + 0 + + Wrap + NO + + + Bounds + {{227.974, 112.367}, {56, 21}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + HiraKakuProN-W3 + Size + 13 + + ID + 74 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs28 \cf0 \'96\'d8\'82\'cc\'89\'f1\'93\'5d} + VerticalPad + 0 + + Wrap + NO + + + Class + LineGraphic + FontInfo + + Font + Helvetica + Size + 14 + + ID + 73 + Points + + {287.066, 146.629} + {236, 146.629} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + Width + 4 + + + + + Class + LineGraphic + Head + + ID + 46 + + ID + 71 + Points + + {527.258, 126.235} + {486.181, 94.5807} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + + + Class + LineGraphic + Head + + ID + 46 + + ID + 70 + Points + + {429.258, 126.235} + {460.252, 96.1232} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + + + Class + LineGraphic + Head + + ID + 47 + + ID + 69 + Points + + {457.052, 77.3244} + {411.916, 57.6034} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 46 + + + + Class + Group + Graphics + + + Bounds + {{518.373, 182.885}, {15.2533, 21.326}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 18 + + HFlip + YES + ID + 67 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs38 \cf0 Z} + VerticalPad + 0 + + + + Bounds + {{477.386, 150.063}, {97.2269, 50.2183}} + Class + ShapedGraphic + ID + 68 + Rotation + 269.25225830078125 + Shape + HorizontalTriangle + Style + + shadow + + Draws + NO + + + Text + + VerticalPad + 0 + + + + ID + 66 + + + Class + Group + Graphics + + + Bounds + {{423.741, 188.055}, {15.2533, 21.326}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 18 + + HFlip + YES + ID + 61 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs38 \cf0 Y} + VerticalPad + 0 + + + + Bounds + {{382.755, 153.84}, {97.2259, 42.7629}} + Class + ShapedGraphic + ID + 62 + Rotation + 269.25225830078125 + Shape + HorizontalTriangle + Style + + shadow + + Draws + NO + + + Text + + VerticalPad + 0 + + + + ID + 60 + + + Class + Group + Graphics + + + Bounds + {{326.571, 163.926}, {15.2533, 21.326}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 18 + + HFlip + YES + ID + 64 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs38 \cf0 X} + VerticalPad + 0 + + + + Bounds + {{266.101, 130.663}, {136.087, 50.1624}} + Class + ShapedGraphic + ID + 65 + Rotation + 269.25225830078125 + Shape + HorizontalTriangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 } + VerticalPad + 0 + + + + ID + 63 + + + Class + LineGraphic + Head + + ID + 47 + + ID + 54 + Points + + {333.258, 87.3793} + {380.593, 59.4942} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + + + Bounds + {{378.672, 33.3973}, {34.2045, 34.3071}} + Class + ShapedGraphic + ID + 47 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs48 \cf0 B} + VerticalPad + 0 + + + + Bounds + {{456.258, 66.9667}, {32.6962, 34.3071}} + Class + ShapedGraphic + ID + 46 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs48 \cf0 A} + VerticalPad + 0 + + + + Bounds + {{185, 194.045}, {48, 36}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + ID + 45 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 \'8d\'82\'82\'b3\'82\'aa\'82\'51\ +\'88\'d9\'82\'c8\'82\'e9} + VerticalPad + 0 + + Wrap + NO + + + Class + LineGraphic + ID + 42 + Points + + {178.53, 175.089} + {177.53, 249} + + Style + + stroke + + HeadArrow + FilledArrow + TailArrow + FilledArrow + + + + + Bounds + {{170.404, 136.466}, {15.2533, 21.326}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 18 + + HFlip + YES + ID + 38 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs38 \cf0 Z} + VerticalPad + 0 + + + + Bounds + {{94.5696, 174.089}, {15.2533, 21.326}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 18 + + HFlip + YES + ID + 37 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs38 \cf0 Y} + VerticalPad + 0 + + + + Bounds + {{27.3941, 188.817}, {15.2533, 21.326}} + Class + ShapedGraphic + FontInfo + + Font + Helvetica + Size + 18 + + HFlip + YES + ID + 36 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs38 \cf0 X} + VerticalPad + 0 + + + + Class + LineGraphic + Head + + ID + 29 + + ID + 35 + Points + + {33.96, 110.504} + {56.8825, 91.5867} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + + + Bounds + {{-33.0765, 155.554}, {136.087, 50.1624}} + Class + ShapedGraphic + ID + 34 + Rotation + 269.25225830078125 + Shape + HorizontalTriangle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 } + VerticalPad + 0 + + + + Class + LineGraphic + Head + + ID + 29 + + ID + 33 + Points + + {103.293, 112.358} + {83.0983, 92.6728} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + + + Bounds + {{53.5833, 139.874}, {97.2259, 42.7629}} + Class + ShapedGraphic + ID + 32 + Rotation + 269.25225830078125 + Shape + HorizontalTriangle + Style + + shadow + + Draws + NO + + + Text + + VerticalPad + 0 + + + + Class + LineGraphic + Head + + ID + 28 + + ID + 31 + Points + + {176.325, 79.8164} + {138.599, 44.0059} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + + + Class + LineGraphic + Head + + ID + 28 + + ID + 30 + Points + + {83.795, 68.8262} + {113.129, 43.4052} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 29 + + + + Bounds + {{129.417, 103.644}, {97.2269, 50.2183}} + Class + ShapedGraphic + ID + 13 + Rotation + 269.25225830078125 + Shape + HorizontalTriangle + Style + + shadow + + Draws + NO + + + Text + + VerticalPad + 0 + + + + Bounds + {{53.3734, 63.2153}, {34.2045, 34.3071}} + Class + ShapedGraphic + ID + 29 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs48 \cf0 B} + VerticalPad + 0 + + + + Bounds + {{109.764, 15}, {32.6962, 34.3071}} + Class + ShapedGraphic + ID + 28 + Shape + Circle + Style + + shadow + + Draws + NO + + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs48 \cf0 A} + VerticalPad + 0 + + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + レイヤー 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2011-09-25 02:20:53 +0900 + Modifier + shoshi + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSLeftMargin + + float + 18 + + NSPaperSize + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAx7X05TU2l6ZT1mZn2WgVMCgUoDhg== + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + QuickLookPreview + + JVBERi0xLjMKJcTl8uXrp/Og0MTGCjUgMCBvYmoKPDwgL0xlbmd0aCA2IDAgUiAvRmls + dGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAGdmU2PHLkNhu/6FTpuDqPV9wcQLBAb + yWFvCw+Qj2N6Z2AYngCOD/n7eagqqdTT1WOvbYy7rSmKFEW+fMn6on/TX7Tlb0pNlxr0 + f5/03/V/9M/vvzp9+apd//v1oh+sSVp+lgeftQvF5OKjLtmbVlJVL9rFaGzKVZeUjS9l + WYjJRJcXqVBNcUVfWHLG1+p0Cd5YxxfnrWmhOHWsuGhS8oVnppitxuWK/rH1XBjKp9Cw + EGX71ljdMD9i4lR/rLw6GUZyXv0rP58297z/oMRzVn94jxNd//ogH+LHC44YzkGd9ZFz + Ls7x2RQfrJ/eUTydarTpkMORvvqWV/8kvFJdxeRxiGNlP6pa5YY/jt3HymHBcNG083CR + csEEn7xc2n5Dy8ruokXuAwFF7HiJHauJm8UxDo2OfwgMa2rMUeGkd4+a8BEvPvD5UI21 + odmsK6H2+KJ//pszFt8+Puuf/vIn/fhJ//VxU3EVnqp6Q8iVoAuHKRkvvujajI9F4poj + 20zgzZXcivFW1Ay53Ahu64q6YJ6ptdWqcw2mWs+XJPIhHyupmlB9CnrIcUfJmWJD5ql9 + dzVXpgVTbtp5OXYv3pmYGtE8LBgrJ+eTcFycO6PuOFE1PrRrR0RSqkavpiNqMqWxdjii + eRMbUceBphmtGdeKPywdC+M4apGah557z5Wy69dDDoduRh5eUNmZRBpwbcMLc+XmbBf9 + VsAVa7j/7AkAb3Jw7g8G3Ls3As6lABgVYsMmEyxJSnKXYgLfRF0VnPysvQ2mFLc91nKU + tY/6RhjYPL/N+aTsTazFRU21Bqx1qxZ5yobk1JWWRVbcdRY1jeQuOUUNSoboixM9ZLrz + zakYDBfiEppEfgM9cpsLBsIAu+IE2AHtF90CSed8Yo0UaVbMI9pwfuUePFXCx9jNO5N+ + ZvNf+fl0auSUyAKVrqFPTX05mmxbzau+DPCWlGTt42HtId2Ps2O6OnOLoxzgYzIyAEwW + fBFYB5sEHqTO2dQ1ilucRHck/YuNpJDLUgsLfsUqvOGNK0m84dBvC8YXW0z1IXbrbqTR + NL1xbtvUhz3cwhaBQx8I62OVcDv0JUzIqWzBcSLdTwHYOgHuKljkbNGpSDST/RzHkpvZ + NZ1JrZBCYyvnqVLOBp4jTIjXzdkn0kf5PHG1mvrYDJ+Duos+yobJMXf3DX34VQpmudY3 + pHH+3ViHlthoG8chbCMMhVrB/XbUA8ggNHWJdYo87pCjtyC1gCttmWAm1gEvijFFoDSg + n3LyWbdIjbNWnmNz29OThN+l1SI9b/c01ocEWUgFDCDIog93o7lJHk19XBVh2UHn0LdK + X90uPi6UxqYT8feiA6Fcmi3YB2ZKyfsMsHHgyEl4xAANWxa9Erx/p4K182EP8B1asIqy + KwVl0UK0gjwgUIeuYV4XVGL6K1YBH7UuWCnZ0NLGHxfr1bf5a8xvnIu6DC6HDDpuvEO2 + sDCwR6E7HdUe+ISCJJsk5+NGQOCjOwHR+igIr0NY9oxkRxPm60AAb73ECDS0QhScBmHB + iizhuh+nM5gJpoFw8eLlTB4VcIUIBnixRapHySbWIOkcoKw1yxoZQ3Bs13IjjeoZYKfw + MSUceeRbFGOnPmezSa7n29QnEVlr3cD7TPrkliYp5nnrJZZItERRFH787lEBJZ368fmQ + TQg5Cj28pX7/OHW84z5dy0CPZGIsbb/Y7931n+e7FthioNJmjK7FhZNd+YX1rcBRbm39 + 17HraBfOgsWhBrIA3a/EJzGC/3uhzjFoiJvB3/diRZ6jrDlSE0ta620XdCDnqBOXWFMH + MKkpLOW+1oSZ9Nx6LbyGiv6i5p1NSjnV4WPMImUwdVfXLQX22XqqkzWb7RYpZ8Idijh/ + ssB3Jtas64QDyMRKSg73aRP9AJsS5ax5BV7QYZKg2xluhO/wp6GFyoeXBYUow12L6o6P + RbwytPBFApXifqXlEH4rxilIFEHAKKXR2qy4Iu1N2SAFXrVByp9teY4Qtid+EkH39Mts + cZaY+cbGYAHu683SsnFszzaUQDcVj02v2npFWYsEn8tCkaXMWKFUOkorBO50IhNIsmMl + Q7dibKwMObDI0M9xYE0lNYXeFGQCWYUvRqhOhCGuK6iJRP2Qo80A9AlT7+ibtt3VXBEq + tVlAD9Dlpp3Ijd0ZIYCYELJhwFzYrVSL1P2KJZg0zyVVvr32RwV6W8lqeghmi6foAqZc + g1xEwaTFH4JTLZKS0+KxouA027lWueGPY/exQjR3C9hp+mOzU/w//EG7Cm2nuE+HHCvj + 3ub5bluotVxEyB8JKn1uBQxhslvt/L6eXb3Vs+so/JdsLxBpOinpVKOMImiB4dv8roBY + Y0UVD212sO0pxtghOLGIJUqhQChobbLUGToPCKr0YnOFykNgQsV3OTwWCBiBs7n3XBjq + w5QaRiI196axZcAV1aF/XzmMPMTOAWqchqYiegc3WZzATIspD8R+OIHhm0x/aNeHGO0a + h+I2FifQswT6i6SmoWNFz+MscuPMc++xMNUPKTWMRNvcm7EQbZ1cy34Hx8J2vYvQgp4b + q15AjlEFlBSKI/M+MAZ2dGc6FMrVdIiCJdOhpVlfdp01LEDOigwYmSEEaqQAXQCnUoPs + pkbDxljkHjWDQdbWhz3QogqZEy7LYAzq1BODYtepWbTGSxPNGEg649Q7rXAiPanZKfef + EmArVw/cvqipjwSmlPeCCzvf9dF+ZDFQqtaJ9N7nStH5elFMK6hRsCamMFVmbZwmYLAQ + CnYBO4LsFGgA4JeQDNxDUu67vxImXt9G1KHN07fhr95tDG1VcHvjxEOb8p4ikPa27kR4 + iSG4IyXsi8ymJ9n/Vi/AZfShSQZOPBzqe3qBQL2TVsHi9V5mT1uCFTblDpiYER2MHqMD + dbZg/j5mqn5a+O5VyZbzsh0YR8rv99dxM9AwBezM9BsB0sr9cWN8ZQwh9xel/Eh0nEnf + QaahZ7859DAJ2vXILDczHFr0aLm5tI2JFj2H9Oh7ZDh8k/5kJL0ZZIyWnqm3vBTo6f9N + j+3pv3D5G4/RJNJ0QCuPgE8eEpjT5rAYshwE202JTAm3gN/Y8onsubvGg0ucDyVKvJUY + QC5KurdGu3siexLmk5jLvtLx4ituNsnQ+sZX39mhvIZK2YmRCFWGHo1GlLTskx/cYgAd + Xv8whrShd6K7iddtbKSMMOyT6RbgFXKQghbpZqoDF+n7Q2VgSHRGeGMB2uQ5UGjj9TfS + YNPEyjXBJq4fEt3Fm7FTH5lCh9yjdOrjJQSjng7NZ8Jyqnt9m8QkZ6KA0CE4R50Nuffp + QCUvSTQkzvlA7G6FRLIFNgIKEHi2wl1EHECIDUIlU23XcTyCFp6XDSrD0/CT2EsGnUhP + X5zWjSkhM7nmXOwjhF2fk5cLtaPA0McR6Oeknl3pG9JYO52hzieyCR/wRi/2t1GuMfbl + hFQtusMko6lUbfe+7CNRW1LwihGkTIFllpowiqaSoQcndxViQxpiFEWW1MSrwMIWGUMa + X07pZ1Dk/rR4SjCNljGwjPmmPjk52Ch7D31kaX8ZtPV+Z9Jyiqj/92Z4cI80VKkpR8Bl + z4u6F7p5Xp+N/26h4aEeNP+EhoQTJFUe20V1hqswOZY0GWsK9IAk97WP+kz67dCYEsMO + QmPsjW1MdsTUQx+vKAiXbW3RN6SxVpyxz+RuwJzCSq/OCE2u0AV5mbQB1P6mDyh4gHZx + oq2eUixHP/z0BLwU5l+0rpdQf1Hjld+CVDLqzH3uQ5TtO4d9kBRosnEteXXbEofLxYYn + +uyn5x/ZV3hpON333+xJH8gIknY7/cDevCu5Y3Kmi4+/b518/P10a968gKBQcOnZb93B + ixGZz/xxd3xjXylCP+yOt/dm6zsmD3cw1JiR8dv/ARsdqqIKZW5kc3RyZWFtCmVuZG9i + ago2IDAgb2JqCjI5MTUKZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVu + dCA0IDAgUiAvUmVzb3VyY2VzIDcgMCBSIC9Db250ZW50cyA1IDAgUiAvTWVkaWFCb3gg + WzAgMCA1NTkgNzgzXQo+PgplbmRvYmoKNyAwIG9iago8PCAvUHJvY1NldCBbIC9QREYg + L1RleHQgXSAvQ29sb3JTcGFjZSA8PCAvQ3MyIDkgMCBSIC9DczEgOCAwIFIgPj4gL0Zv + bnQgPDwKL0Y0LjEgMTQgMCBSIC9GMi4wIDExIDAgUiAvRjMuMSAxMiAwIFIgL0YxLjAg + MTAgMCBSID4+ID4+CmVuZG9iagoxNiAwIG9iago8PCAvTGVuZ3RoIDE3IDAgUiAvTiAx + IC9BbHRlcm5hdGUgL0RldmljZUdyYXkgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry + ZWFtCngBhVJPSBRRHP7NNhKEiEGFeIh3CgmVKaysoNp2dVmVbVuV0qIYZ9+6o7Mz05vZ + NcWTBF2iPHUPomN07NChm5eiwKxL1yCpIAg8dej7zezqKIRveTvf+/39ft97RG2dpu87 + KUFUc0OVK6Wnbk5Ni4MfKUUd1E5YphX46WJxjLHruZK/u9fWZ9LYst7HtXb79j21lWVg + IeottrcQ+iGRZgAfmZ8oZYCzwB2Wr9g+ATxYDqwa8COiAw+auTDT0Zx0pbItkVPmoigq + r2I7Sa77+bnGvou1iYP+XI9m1o69s+qq0UzUtPdEobwPrkQZz19U9mw1FKcN45xIQxop + 8q7V3ytMxxGRKxBKBlI1ZLmfak6ddeB1GLtdupPj+PYQpT7JYKiJtemymR2FfQB2Ksvs + EPAF6PGyYg/ngXth/1tRw5PAJ2E/ZId51q0f9heuU+B7hD014M4UrsXx2oofXi0BQ/dU + I2iMc03E09c5c6SI7zHUGZj3RjmmCzF3lqoTN4A7YR9ZqmYKsV37ruol7nsCd9PjO9Gb + OQtcoBxJcrEV2RTQPAlYFH2LsEkOPD7OHlXgd6iYwBy5idzNKPce1REbZ6NSgVZ6jVfG + T+O58cX4ZWwYz4B+rHbXe3z/6eMVdde2Pjz5jXrcOa69nRtVYVZxZQvd/8cyhI/ZJzmm + wdOhWVhr2HbkD5rMTLAMKMR/BT6X+pITVdzV7u24RRLMUD4sbCW6S1RuKdTqPYNKrBwr + 2AB2cJLELFocuFNrujl4d9giem35TVey64b++vZ6+9ryHm3KqCkoE82zRGaUsVuj5N14 + 2/1mkRGfODq+572KWsn+SUUQP4U5WiryFFX0VlDWxG9nDn4btn5cP6Xn9UH9PAk9rZ/R + r+ijEb4MdEnPwnNRH6NJ8LBpIeISoIqDM9ROVGONA+Ip8fK0W2SR/Q9AGf1mCmVuZHN0 + cmVhbQplbmRvYmoKMTcgMCBvYmoKNzA0CmVuZG9iago5IDAgb2JqClsgL0lDQ0Jhc2Vk + IDE2IDAgUiBdCmVuZG9iagoxOCAwIG9iago8PCAvTGVuZ3RoIDE5IDAgUiAvTiAzIC9B + bHRlcm5hdGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K + eAGFVM9rE0EU/jZuqdAiCFprDrJ4kCJJWatoRdQ2/RFiawzbH7ZFkGQzSdZuNuvuJrWl + iOTi0SreRe2hB/+AHnrwZC9KhVpFKN6rKGKhFy3xzW5MtqXqwM5+8943731vdt8ADXLS + NPWABOQNx1KiEWlsfEJq/IgAjqIJQTQlVdvsTiQGQYNz+Xvn2HoPgVtWw3v7d7J3rZrS + tpoHhP1A4Eea2Sqw7xdxClkSAog836Epx3QI3+PY8uyPOU55eMG1Dys9xFkifEA1Lc5/ + TbhTzSXTQINIOJT1cVI+nNeLlNcdB2luZsbIEL1PkKa7zO6rYqGcTvYOkL2d9H5Os94+ + wiHCCxmtP0a4jZ71jNU/4mHhpObEhj0cGDX0+GAVtxqp+DXCFF8QTSeiVHHZLg3xmK79 + VvJKgnCQOMpkYYBzWkhP10xu+LqHBX0m1xOv4ndWUeF5jxNn3tTd70XaAq8wDh0MGgya + DUhQEEUEYZiwUECGPBoxNLJyPyOrBhuTezJ1JGq7dGJEsUF7Ntw9t1Gk3Tz+KCJxlEO1 + CJL8Qf4qr8lP5Xn5y1yw2Fb3lK2bmrry4DvF5Zm5Gh7X08jjc01efJXUdpNXR5aseXq8 + muwaP+xXlzHmgjWPxHOw+/EtX5XMlymMFMXjVfPqS4R1WjE3359sfzs94i7PLrXWc62J + izdWm5dn/WpI++6qvJPmVflPXvXx/GfNxGPiKTEmdornIYmXxS7xkthLqwviYG3HCJ2V + hinSbZH6JNVgYJq89S9dP1t4vUZ/DPVRlBnM0lSJ93/CKmQ0nbkOb/qP28f8F+T3iuef + KAIvbODImbptU3HvEKFlpW5zrgIXv9F98LZua6N+OPwEWDyrFq1SNZ8gvAEcdod6Hugp + mNOWls05Uocsn5O66cpiUsxQ20NSUtcl12VLFrOZVWLpdtiZ0x1uHKE5QvfEp0plk/qv + 8RGw/bBS+fmsUtl+ThrWgZf6b8C8/UUKZW5kc3RyZWFtCmVuZG9iagoxOSAwIG9iago3 + MzcKZW5kb2JqCjggMCBvYmoKWyAvSUNDQmFzZWQgMTggMCBSIF0KZW5kb2JqCjQgMCBv + YmoKPDwgL1R5cGUgL1BhZ2VzIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdIC9Db3VudCAx + IC9LaWRzIFsgMyAwIFIgXSA+PgplbmRvYmoKMjAgMCBvYmoKPDwgL1R5cGUgL0NhdGFs + b2cgL091dGxpbmVzIDIgMCBSIC9QYWdlcyA0IDAgUiA+PgplbmRvYmoKMiAwIG9iago8 + PCAvTGFzdCAyMSAwIFIgL0ZpcnN0IDIyIDAgUiA+PgplbmRvYmoKMjIgMCBvYmoKPDwg + L1BhcmVudCAyMyAwIFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAvWFlaIDAgNzgzIDAg + XSAvVGl0bGUgKP7/MK0w4zDzMNAwuVwwMDAgXDAwMDEpCj4+CmVuZG9iagoyMyAwIG9i + ago8PCA+PgplbmRvYmoKMjEgMCBvYmoKPDwgL1BhcmVudCAyMyAwIFIgL0NvdW50IDAg + L0Rlc3QgWyAzIDAgUiAvWFlaIDAgNzgzIDAgXSAvVGl0bGUgKP7/MK0w4zDzMNAwuVww + MDAgXDAwMDEpCj4+CmVuZG9iagoyNiAwIG9iago8PCAvTGVuZ3RoIDI3IDAgUiAvU3Vi + dHlwZSAvQ0lERm9udFR5cGUwQyAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0K + eAGFlH1MU1cYxu+l9N6K16rAFe2tt1eRIQIFxI8p21BRxxQmioBMhhQo0AItbUHBGd2c + od8ffkXFD0AKMjB81RlhKkUtlCCiMreRmZhhMgPOAMuSc+uFuWL2xyJb9sc5Oed33udN + nicnLwx5ekAwDPvt2Zz8SWJMcKxEKdouyi9JUMo/DU2JnH5KoAmafxwj6cUwTXroMZYe + 85xcMDmL7/mQ7/k7e/EyCOpfvEytXPp2457EBIuhYccSzJ/PfYEt5bOjsGV8WDqfD2dj + AXx471wIhWEE01e0dD/dmC3PFG8TFYlkETHyojKlJDevmEpbnpUWREWsWxcZujI8fC21 + WSSRSYqK5DIqMUspFsuo+JxcIRUjF4ZQccXZQmpjQQG1a1qponaJVWLlfnG2cNpGrkQm + pyQqSkQVK0XZ4kKRMp+S5/xHu3d8J+/cmBy349003tKEf6U736UQBLEOsFXY+9xfIQj2 + 8PCA2O6goXjoOaxnLWLdDex0/dYJj3W64jpZY65x/M/drmuvd6NrUnDmwaQfM0D7sV0r + pu65b7QfcC/2VNDUHdx9WgD6Jxewp1a04a6LKBiYXMTmPvkeHn/oChxk0bddwfgtbf2x + li844+mOMAbhMXNjKcYjlUwrSTu86cgl1fGvTksfVrSeuXGJAwJ6nwFfEMZ7KRmOc5J9 + 24KaGE+C4TFwemSUIHaDeHkAj6Ee+48OdveAhQ7yxh+tILQCCDgxOvww45vDLM8M5QRl + ZKWJiCTRk5dgXi9gjzsF7Veun+uxcLgHHWDNHXDiDgh3wCP3QXAvsPSC8Pss3ze0kO7D + U+UGk0JgUhpKpTxGhubrSjTFpKn+gsFBgM1Ie51O0yDQ1OguNPOADG02VJqqSI1Crksl + GOluHFiYE4wFoVuZYVxt1TY5eC4Y7TReNbeS6hyZLpmY/AVJkRnMuQKz2JiXypt8gyZo + C9SF5ONuV3QCMhXtsuGu6KmPpqIR7kTXi9sT35Xc67n9vCvV4f3KPnJ3zO77yu7rDfm8 + soOuCXwYaavSqWsFfahaWabLIiJe3Ec6qnWaaoG2Sld/kwfWoO2GK8ZKUnOgRJdObH0+ + ily/+LdAUarbRwjPIo3GGksDuQWxFBiVBbzDQjTjgMGsFGxHzdZqg40YidyJ7FMZTEqB + SWEoyuAxq9B9OplGQZrqLhs6iK6wAES032BWTQtqrIY2Ynw9ItGqyqXkI6T8G219Aw80 + ek6MBaCBYAU+OhaCMuGjeEjoKDrC+OMBoROoj4+dPliLH0k8Ki2NL4o4WryX8eKoc7/U + y4nzWy6ZzxhrzIvAjronZ19WnVLo9bXRjsaFceCDkpsbgH+SamH72qr0ptWryhK/ZuYd + coIg6w9tIJgDViO2y9NGB9Dyt0aZa4jbl0Uh+Njtq9bQQnwGTuLm2mrDNQJIkTqrTndW + 4MO2ayv0+pPEAOrDspcrDrojY6RIetm0jks7umE6/QHL5aQdeGurVt0sGETLCwu0KQTT + ATyRBmO9O8f1iCXfqJDwGBbTiGbkGy0SQQxqbm002ghQjSQGZsTviI1ZL/xwZVLlofOl + FarBWz2dzt4fh7qGOoEHR5up3eP+dEPo51pJeR75FClv1DZ38MAQ2qK9oekgbRsuFl5N + t2+6mvfzlpsZ1lJn5vkrp05brSH2KGfUs/i+PY8SJjhciOUem6ExtAB7Tz/nHwPxWz77 + mDdNzaRN3vSSmfQnb8ak57O36hHSi61ZmhWGzbJ52WbbMMyGzTFg89303JmkSsz79SHf + GZXdXv2zuzGs//8ru7ycs7swzDmj8i8xwYfnCmVuZHN0cmVhbQplbmRvYmoKMjcgMCBv + YmoKMTM1MwplbmRvYmoKMjUgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9B + c2NlbnQgMTI2NiAvQ2FwSGVpZ2h0IDExMjUgL0Rlc2NlbnQgLTM3MyAvRmxhZ3MKMzIg + L0ZvbnRCQm94IFstNDE4IC00MDUgMTI2NCAxMjk4XSAvRm9udE5hbWUgL1hEVklTQytI + aXJhS2FrdVByb04tVzMgL0l0YWxpY0FuZ2xlCjAgL1N0ZW1WIDQwIC9BdmdXaWR0aCAx + MDAwIC9NYXhXaWR0aCAxNjE4IC9TdGVtSCA0MCAvWEhlaWdodCA4NDQgL0ZvbnRGaWxl + MwoyNiAwIFIgPj4KZW5kb2JqCjI4IDAgb2JqClsgXQplbmRvYmoKMjQgMCBvYmoKPDwg + L1R5cGUgL0ZvbnQgL1N1YnR5cGUgL0NJREZvbnRUeXBlMCAvQmFzZUZvbnQgL1hEVklT + QytIaXJhS2FrdVByb04tVzMgL0NJRFN5c3RlbUluZm8KPDwgL1JlZ2lzdHJ5IChBZG9i + ZSkgL09yZGVyaW5nIChKYXBhbjEpIC9TdXBwbGVtZW50IDYgPj4gL0ZvbnREZXNjcmlw + dG9yIDI1IDAgUgovVyAyOCAwIFIgL0RXIDEwMDAgPj4KZW5kb2JqCjE0IDAgb2JqCjw8 + IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMCAvRW5jb2RpbmcgL0lkZW50aXR5LUgg + L0Jhc2VGb250IC9YRFZJU0MrSGlyYUtha3VQcm9OLVczCi9EZXNjZW5kYW50Rm9udHMg + WyAyNCAwIFIgXSA+PgplbmRvYmoKMjkgMCBvYmoKPDwgL0xlbmd0aCAzMCAwIFIgL0xl + bmd0aDEgNTA1NiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAG9WHtwVNUd + /p372N2QUJMAsnks924vS14bIag0EEqWsBsSAhgI4C6C7CbZmMREMhhSwYHuWLCyINUi + VMFR6cMKFLlsMvQGlEZGq06roo5UrTNKfXU6MvZFR0Vz+527yUoYZfIH4z1z7u95zvnO + d86ee+92r1sfpbEUI5HqV0a6Wsi6xj0A4W3qjHQl7eynIHOberrVpC0XEokdLV23dCZt + B/LHuG7p2DDUPvs9+Ftbo5HmZJy+hJzBHUmbXQc5ubWz+46knd0H6ehY2zQUz34Ttq0z + csfQ+PQObPW2SGc0mT+O+yd3rb29e8iugSzsWhcdymdB4HuFGLwCraU0upXs0DJRVhPZ + /z7GRRKiPI6r2Zu+a81Vs89TlsOy1yz6mSX/6H7qzGfRLwvS73d8DkfacD6XtqLBIqIM + hvi59PtTEasdboJBDSUG1aJWol6PWlIy10kx9jjdh/oYqkhtbDttQN2G+hCqlNIOwOpn + 2xOSw3ecbaBctsCXLinLxucozjHpymsGs/U9orzlfP8Ey8HqnWU5ibGUNncMe4w9Ss2k + sN+Qh22kGipke3uLOpQwQgeoCzWGKlp3xg4kJk1XTjIveSSGNlNoksSOKR+XlSoflhkC + SyinCgwJ4plJsHxXKQOuR5Q/uG5RTqIeSoYOFiHjmHLA1aHsmmSwvQnl5y6Doc39SbHe + habHlM6iPUpzmRVfuMcQDiWUmYiv8KUrM8rdyvWuD5SpBYaDwS51LVSKy15SJqMh0lR0 + 6vFlKfmuXcoshCa5AgWzUE+wg2wfFbN9Cc8C5ThUTLe3tqh8j8Hu7K0pLPMYbKNvRk3h + nqKaAk/RQsVTVF1QAH3FC/Yt9pvsc+3T7SX2QvsUu9ueZx/vyHZkOr7nyHCMcTgcdoP9 + LlGp2E6wQ1QJWg71OmwO2WBPwimdYIct5+HfOySH4CDHeMN8D5uX0XiDHerL5BqUYzZL + sxnscG/SddinSFyTrECmwHXccCeBOQRaQDq717DR1qt7Kp2V2XOyZlb7v+0WtiLD95Jv + v5zMpe+pawjqB10hfTpXTFdoON05rHyr7F6PULSqpKRu6Ybenq72lkBUC4S1QBQ1rG/v + aXXqsUZVPdrexQOqLk4JNza1chmJ6l1a1K+3a371aI/V7pJwCw/3aP6j1BJYFjza4ov6 + Ez2+noAW8Yd6G6vWrR4x1rbUWOuqvmGsKt7ZOj5Wo9XukrFW83AjH2s1H2s1H6vR12iN + xScfaGuour0bu1MNtNWpemGDXrtkZVBXIyG/wR6H07+e5AHKlJ+mQjlGudJUUojMt1Df + 5nJwufmR/DxlDnaa/xIrsKj9vAqDlbNpgO6lfXSEbPQE9EK6mR6kF1k7fturqI/OsEl0 + Dc5eiQxaSH9mpvkqtdCvkd9Np2g3HaUMtOmkCYjuZB5zI2wf9EbaYv6SJlM53U1P00z0 + upPOmQfMXkSX0nI6SIfQ/k9ME45K48wnzQ/IQUvQ5xZEXjUXmkcom7xURfXwbqGTzCO+ + bbaSkyqA7mF6lPbTM/QJu4v1ma1mj3naPIut6qR8akDZxPrYWfGIdLf5sPkPcxBMFFIx + Rg3TLvoV+j+CMoCjNcBuZd1sF9st+IS7hD5pqzxx8CvwUETzUWpwKt8DBvrpWfo3fc4+ + FZxiptgtPmdeb/6H0qkOs+QziVIPyk9RdmJOJ5iNTWPzWD3bxB5gu9nrQrGwXAgKPxLu + ED4SF4urxA3i69LtUkLeIT9oSx88b54wnzffoInkoptoHW3G7E7RafovfcFE9JXPPKyC + VbGbUWJsn9DP9rN+oZ4NsNPCQfYue599yi4IspAhTBBKhG5hl3BIOCW8LLaJu8WHxHfF + 89IcWZD3yx/aPPa/DjYObht82awwz5qf4Yh1kBsrU0WLaQ1FMNsuuo5+jFkcRjmCVXuW + nqMXrfI+y6dz9BlYIJbNctl0tghlMbuBtbA29gg7jnLSwvI/AQshpAlZwkQhX2gQGoVO + ISa8IcTEPLFYXCCuFI+gvCCeES+IFyRZGidNkOZLtbRD6pT2ojwuPSElpFfkmfIcebG8 + Qo7J2+QdYpP8qnzGttm205awfWr7J47Fhfa19h1YnRexZ5/BXv76kthkoJ9Ot1ET87NG + 2oPV2M8iFMfuamb3gK8uKjRXi5vF+cI07IaTdCd2617aRNvEVbTffFM8SH/BTulAlzH6 + rVRFLvkXWJ27aBp20VDxFRUXFRZM8UzWvu9WceTn5+XmOCdePWH8uOyszLEZ6WPSHHab + LIkCI29Aqw6r+pSwLk3RampKua1F4Ihc5Ajjp6zq1SNzdJW3iyA0ItOHzJZLMn3JTF8q + k2Wqs2l2qVcNaKr+kl9TDbZySRD6vX4tpOrnLH2Rpd9n6WOhu91ooAacrX5VZ2E1oFf3 + tMYDYX+pl/X7QMeYUi8/OHyUzjvWaV5kEw5YmsczAnqu5g/oORp0xERPINKs1y8JBvx5 + bncIPriWBjFGqbdNB07antGsNW83fNQY5lpkVVAXIyFdCPO+skr0iZpfn7jxQ+fX5rAW + 2HFRUBc81ZFovFr3hbeDXG6GuRXZAauuQUW3wtZQUGdbh0BwjO1AyuEmnwmecLuqp2lV + Wmu8PQxyaWkwkevLtQ5fneqDiRxfjmWUevudmyvcmH1/6dzSuVxWuJ2bk/LjnyT9rw1w + 6dz87HuQdUtTBDDOgFYLnLraZA2iAWw5v0XLKd5UDp5whRim2QY883QBe0b06LKnNqLH + GoZhtPqT4MLt/kRaTq71EKoKIT8cz5yFlUJ+pqbGz+NpHdbOfTLSExny2DyZ54kH+UKn + 9orOIsN6D39YejDrVqfWyte3x1pT2JozcJEDNqeGY9bH4wFeH3TraggOvE166wxKqw8e + ZWxnyGDmVoP8rn68o4prbkbYy7damx/jwyj1wlHshnaNV63GyNV8r6hxNV7bHFer1VZs + JsljSQSi8dBUMNgQBE+0DCP6QnkpNRoKzUI/U3k/aIL0eAg9tA/1AGm5pn6FpGlePEzF + KfXBJUE95s/Tff4QVgHbd6A+qA9g54ZCyCpLIQXiTW3OIczTgbmsGPFrk73g3SWGLkLx + OO+zIai59YF4PC/Of29J22B0qcM35DCIp3DKDRarR1sIzZ1nrYFbcwNWiHN6Hbb08I7C + O/vlGZ6Rwo2WPwDaGRbD5VeI4ZmjYXjWqBiuSCEdwfBsYK7gDP/wu2N4zgiGKy/PsC+F + GyDnAq3PYrjqCjE8bzQM+0fFcCCFdATD1cAc4AzP/+4YrhnBcO3lGV6Qwg2QdUC7wGJ4 + 4RVieNFoGF48KoZvSCEdwXA9MN/AGV7y3TG8dATDDZdneFkKN0AuB9plFsMrrhDDN46G + 4eCoGA6lkI5geCUwhzjDN6UY9uXpdPE5HLvk2KUrfjCvuohyvCnJ2VQlzITCP5/xAY0r + A18WGZBqykN43+b/Mgl4ByfpNL7dRPwHVJn8X8YxFQ9PVEemQXQaldvQxXcMklAJuv0d + Oo4WRCtKjqMXGXJa2bVZ7qwC1Cppp/Hl3+Snv5hnSIsu4BsfGdZlRvHN8k0Xj4tWgOHr + K4nahv+jqN4furFucUlNtKMn2t3WFEFOMsqTEad8c+jijpTOMFdc/wfRw2FaCmVuZHN0 + cmVhbQplbmRvYmoKMzAgMCBvYmoKMjcwNgplbmRvYmoKMzEgMCBvYmoKPDwgL1R5cGUg + L0ZvbnREZXNjcmlwdG9yIC9Bc2NlbnQgNzcwIC9DYXBIZWlnaHQgNjg0IC9EZXNjZW50 + IC0yMzAgL0ZsYWdzIDMyCi9Gb250QkJveCBbLTk1MSAtNDgxIDE0NDUgMTEyMl0gL0Zv + bnROYW1lIC9QRFlXS04rSGVsdmV0aWNhIC9JdGFsaWNBbmdsZSAwCi9TdGVtViAwIC9N + YXhXaWR0aCAxNTAwIC9YSGVpZ2h0IDUxMyAvRm9udEZpbGUyIDI5IDAgUiA+PgplbmRv + YmoKMzIgMCBvYmoKWyAyNzggXQplbmRvYmoKMTEgMCBvYmoKPDwgL1R5cGUgL0ZvbnQg + L1N1YnR5cGUgL1RydWVUeXBlIC9CYXNlRm9udCAvUERZV0tOK0hlbHZldGljYSAvRm9u + dERlc2NyaXB0b3IKMzEgMCBSIC9XaWR0aHMgMzIgMCBSIC9GaXJzdENoYXIgMzIgL0xh + c3RDaGFyIDMyIC9FbmNvZGluZyAvTWFjUm9tYW5FbmNvZGluZwo+PgplbmRvYmoKMzUg + MCBvYmoKPDwgL0xlbmd0aCAzNiAwIFIgL1N1YnR5cGUgL0NJREZvbnRUeXBlMEMgL0Zp + bHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBhZd5XBNZtscJgaTQkG6F0pCCFHaP + +zK0jDrt0qLY4oIbuItohAQQJAsQFtlEAqktCwlEdiEsMYCyiQsiiIrIIoi9uLU6ds+M + n/d6tMfXMzfpi29e7H/mve55793P51ad+tap+znn3N+nPueyXNxcXVgs1syDBzfv2Re8 + cFOcUrxVHJ+yUynbvnhf4PtXO+2Y3dfAE9n9WHaRK8VjUzy3yRmTHr5u475ub939WC4u + o36s8KLiny98Iw/3c3l5exbvY18PlPeRr6eM9xtfVu00X5aBN9uXpfzABWGxODyqrHXg + 6dt10bJjki1iuTjxk2CZPF0ZFxOb7B8xLypivv8nn34auHhpQMAK/w3iuMQ4uVyW6B8e + pZRIEv23SWOW+AfLlizyD02OXuK/LiHBP+z9l0n+YZIkiVIliV7yPo+YuESZf1ySv9g/ + WSmOlpwQK+P9ZdL/ZblfJL5x845NIQd/WY6f6YF/RTet+5d0/S+pi4sLm8/ext7DjmTL + 2ElsE7uYfZE9wv4j+41bNfdHD28XlovrPwebzXb50LlBLttcHrKCXQNd/8HOcStyl3JO + cV25DPcfSIiHckr71HNzex3f97Le9DpCe9lvHD+g/7nb0fnTbu7yfSi8NzkTjtlnujsW + vLvlfLLPBM7p/m7+u37Uac0Ao5Mz3N8taEcdlVwwNunjzi9TGSYcH4xPdyz/xmunQzDD + S9/TTBR24M+5XvICSRxxAIMPOObu0gZbZ/PFpsbHfYDzdX3VuRakvau6+7oQTFnwNVwY + GKLYHyk6Ls2MzQx+niUo6jFZqhqQrnPXakaxvw4fXLv9+JF5m3CIrCbI2BOhe8S7laGI + lz5TosnMXYV47dQ3ldFDGN/6iAV8HQdQJp3S0BI9JEuh9/lFyMKW3vCb2MSVeyD4Gi6r + yTOl1GeHnNybfAA5npmRkY5Jjo3/NQXPHM4FfsBV2M80620i+8oVKPCAvl/AtZVw+4RV + kA7c0iYkz6Uvjo1ueYjwT43ZpXdY9qvjbEea4zTadbjpqHVv9zmB9E7yucM9yLsw2I82 + FBmZWp2J6Tb+4cxxiJ4IjJgbGyTZlBA9FiWw3TzbcaZuDPhdAWgr+ATRtZ6ha7BX5+Jm + QbfM2fKteHx22kklFhNeYQ3DtemUOlOYReUTmSLZ6MXcLuxqw5kWC955ux74gMXCb7Ku + xDaLziWIzRuw5GySSMZN3UWteqvplray6Owqk4BSUwWEUJy9KCNItDL745wYEnEUAsP/ + CNvmDBsegQr0+7njkN8G/YYvCCLArB1vZwNXhJ96D5gHWGDNBBsstNejTJmersKAgAHT + il+XGk5RRImqa0Xdsd4NSI14dekybOWOXMVe/PO4o6GbhVHl0dYE0aErf5YDPvb63ypa + 3+C5D4OioatyHuWzLLjCKsWTqrMabMILZy80nxU1Xh4sfY6N3czLuI43nirNa0i51yb4 + /NU6wIt5VMxQlEU/ZDZr75SfMxqZs7pTE4I9yQFJC07mVWn0ScPKYYoqrF+dKzClG7JK + FJWR5VFlcUj2Yuh+OgCLy6B1CpxvnzHBfmt/hF4r+c4IokoBu6hHP1AsSVdkJagQOHVV + CGRDRPhpx7qJQ6Jb0XdUrzPKNTqyhDjzVEAVFlIEJgktrTyIL23Zf++58FnX0yf3RP1X + 71+4V4mY2lp0HZj6q5MFEYXhhA9E1fCLdDg1DyEScsgsjMo/RaVh/PghEDQAeoamg8f3 + QN7I/lEvO3jm6EWJwyeXnwxDqLTjZCq2+wRjiMPJjQZKTzGUj9ZIkSU4VdZCVmBlLTRd + hycuSgw+HCANlh+Jj3IKSm80mE2lbaOmCkv3pT9feGX7+6DurrHTZNFRVAmjGRcczgzN + +Vxdet1gKWoxdtK6oirEXgQr0ZW9m1ogckUaLvhR8nXU811I26QXmq+nqNySPd3b2lad + R9RtBeOXhee1Z4tbRSFFp6VEEhXjo2Qi9FtEJdFKnRSLlORnxuLhydIDe4RLvwoHPJHX + j4A/duttMWUgyvEvJEMH2g8hUA0CUYpJyAmKjlu2+pDtev+N8y86rAWZF3G+7DaYcwss + uM0CTSP2fV+wgdqxFK3RFtM1NFikB7yiJgNCGyhKizFEYSHhHBTlc/o0RanVG0PgUoj7 + Lw/ZHaOIUV3eKvg7QMDSYTAXA9iTsIXLd2//KBHPupRrUTUifVG7rJuw3287sOm3T/eB + WUAJZr8FAcDb/xu4KnCl6thanNDevww8/wOIAObTZNPrSovE/YLs/DxCQSD5n0Af9e+x + Q+m0XoaDF+/2o+qYHFKJHT1qKlXg8vLsqnphm83S86DnUECNiK8dt1Nj0x2+4+oHXuPA + FXyIFpVoteWVFVWl5SXmljaKKqsoOaPV6owIw9FEUhT0EJLQ25mTFHnE0ZyjjMBbCBK4 + P/7QWHfnEnJluLumHWs5qzouL4hPDcC9XsTAtUTufmF4aWxzsii7sv50PdZ3ufZaB17b + WFLZ2JdWozapWnOiU48pY5HjSXEpcixaVXel03C+FSzDvcYrvjK0tggfRF4O3hEkXR8g + WhMaF5+ZQtACykAzRqGepnQURl+lKLr6fe2NJcL6C+ayMyUKm+C0RkPmkTrA1zbpLatp + AZNK56mE2WSkZq2oYMURjQbLU1PMSVy3sdYpJCA0+WgCiVAyau3K4M9l6Qj/J58bKOQA + z8DHcOabuw+vPr4JPiypKzIXm8Vdggx1DhlLQkehgMrKozRYXDqtk+PMSqveylymfcBL + vZnSUibah9RQJKEhCkiSUK+HwfBDpxB+B6d8FnZQ/llCndKYW37iy9a+5vGeB33Xrtx/ + ggDvecAdsh7PQfig3xGP0vmUWiNML4xRR4nS4MxY6HFwnnjFsfBtu6wZpvx6GfgYLHwM + dl4EbUVXGaPuDAKOzNCfZLIN0rMQuwCndUOXHsjqWX0v2GItNjZWzf5+LfA7CEKU36W9 + JnqR0VNo86G6CMv2G7UCxaCqXXoD6alCW5yodnt/jUBxV9XmRHz7oWGwcoTl3QeSHatR + XYOF7sPAd5w+C1nYgD/kqhNTyXAMvuSEp9KGRHwZvIPqWqxOH3sV5zD8IHLdhi1BGwMj + oVBiSSzKNScC80uneL1fgKyKS4zeVCrtEqgzckkpNlnM2aGi9TE4HwQ4ZqEv9z7e8mBN + 711B8MS2a/5jiPjdbrTO+UdtMIBVbW87394Hgj+9Ah5PwHpZ1SlTsm0ljIVCOBfuWbbk + KOQlrNE4izin72993177oef1dRb43QBgDz65/WwQTBlge78L8nbNBc/sYWgg9ORGnWCc + O7iVq7XamFYMeM6CqzkRckYnw7dwdQ1NTBfmWM+5ZCUKrfgIt1AuIyIwGPw3MJXTaiM0 + VnzYyRKJYxic+u2fOM1OVI9rGklLpxCs53bRddo6UaFcTkZhk0ZOtPy9VrQKWnFMCNdz + JWSaJkakrbMxLRiYPQMoAqGCs9cNKGY57zDI3oUC/Tyo54Ch1ygomwfLOHDogJPN+Zn9 + 4GRz3rPQyWlodFx69uHkbfGxWWtSalMM+RWKR42t5Tds3Q21Fd2dCNhOoD+sGY8FfodL + 6/VFlrpPz0rObG6OrE01HzmP8Lff7Ov5S89I3+j1v/SO9LP+/e7EoH4AtN8uGxwfZHvn + xHq76O1HnH0E7OYcTWR0ifhmrs5mpdsxxzJORwNZ2ISPcgsTFIQYgyPVnHqmSlcjWsvR + JTNpCiHMgFVoNJlOqETapmq6DbO7c7qqSWfhNDWU+ZLwBreFLmWsIo0snYzGJrmcowpa + q8AZFZ0cLxysRu2r5k+u4sC9k0fQaCK2UC76klPQQlouCUGnYx28wk0t0MTESrSGKJEx + WZvDyBHNsIGqxfoqtCXleEWJoaJFCCq55+karU2kUaSQB7F3LhyxjNYm4toTtDJWaH+9 + AG2my5hqEaFIIiUYzOdIVTST/D6E1HjhXG4ModCoRCP9oIhz3kYS9ThRTZZdEMLvn6Cg + fT5s5/DBH/rAwt5Ht803nR3eEAgfYns/dbZ6Kejkd9y83ZmECqveUKov01XrfABmfVQ9 + VIVAD26UM51E0VecQgtx/pLQcYjbqKOIDvwuV5OcTsZh8D7nRBKjTXpf7Loauh6bmAHC + 4TwYztnn5jQWOg2nVsLhTE6QKjrvs0zE7mUfQaUptE6Jh3CrtCbaRltgRCvkfwlnbA3Y + umthWEVGSbpZ+eru3TvD395Z1rf/bbDZaq4qq0BmD+26EfbsG+DXC+bXgbXaal0DU4xo + kpSkAqN3oXK4KgayN0HkxK2kgbTx9NHTl3JeI3wXN+dRa3HwAbs/bw7l+d9OUR2+nmPT + 7fgv6EVfTzDdPutXlD9ruv2jX9Ot00+W2y+UA3E5RzTFXfNR1G95HkNTHk4d4vEe8jyd + qNS8p5o3/adMb6ilfN03Uv9065jSMbWDx+vgedK8af+n58CU0akDPN7o/+95Y8rg1Bs8 + 3uCvPP8LLZCznAplbmRzdHJlYW0KZW5kb2JqCjM2IDAgb2JqCjMzNDgKZW5kb2JqCjM0 + IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDEyNjYgL0NhcEhl + aWdodCAxMTI1IC9EZXNjZW50IC0zNzMgL0ZsYWdzCjMyIC9Gb250QkJveCBbLTQxOCAt + NDA1IDEyNjQgMTI5OF0gL0ZvbnROYW1lIC9aWklVV0MrSGlyYUtha3VQcm9OLVczIC9J + dGFsaWNBbmdsZQowIC9TdGVtViA3NyAvQXZnV2lkdGggMTAwMCAvTWF4V2lkdGggMTYx + OCAvU3RlbUggNjMgL1hIZWlnaHQgODQ0IC9Gb250RmlsZTMKMzUgMCBSID4+CmVuZG9i + agozNyAwIG9iagpbIF0KZW5kb2JqCjMzIDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0 + eXBlIC9DSURGb250VHlwZTAgL0Jhc2VGb250IC9aWklVV0MrSGlyYUtha3VQcm9OLVcz + IC9DSURTeXN0ZW1JbmZvCjw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoSmFw + YW4xKSAvU3VwcGxlbWVudCA2ID4+IC9Gb250RGVzY3JpcHRvciAzNCAwIFIKL1cgMzcg + MCBSIC9EVyAxMDAwID4+CmVuZG9iagoxMiAwIG9iago8PCAvVHlwZSAvRm9udCAvU3Vi + dHlwZSAvVHlwZTAgL0VuY29kaW5nIC9JZGVudGl0eS1IIC9CYXNlRm9udCAvWlpJVVdD + K0hpcmFLYWt1UHJvTi1XMwovRGVzY2VuZGFudEZvbnRzIFsgMzMgMCBSIF0gPj4KZW5k + b2JqCjM4IDAgb2JqCjw8IC9MZW5ndGggMzkgMCBSIC9MZW5ndGgxIDYzNTYgL0ZpbHRl + ciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBvVh9dBPXlb/3vZnRSLKDLEMs29iSKoS/ + MSZ82KDgwZaMAdsxGIjk4CDZlrFdnHiJMYEs1KUhgCFOUgpJSUtCu2UDlDLYNBFQqMO6 + m+ZsmpL2JLvNcjZl89Hunvqk3YVsEpC1d0a2izlNDn9wMk937tf7uO/3rt7MvK4NG8OQ + CD3AobY+1NkC+mXzE/v7po5QZ1y3vkG8qqm7yxHXxWwAvr6lc11HXJe/A2DKWLd+82j7 + ZPILl1vDoea4H24Qn9tKhriOs4lPa+3oejSuW08Tt61/uGnUn2wj/a6O0KOj48Nl0h0P + hTrC8fo2vX3nw490jeoC8ZmdG8Kj9ZHi578GJKsED4MRvg4GYGCh0gBg+KMpAwTyan66 + mvPN+9ZO8lyDJFnX11Y/pfN/dv7snU/DN7LMz8ifkcE4Vl/jUs5IDkACkn/Y/My4R29H + NykCdXkRWEJUSjSHKC9vkQ168Ag8TfQiEYc23AObiXYTfZdIGJeOknYG9/QLsnIWN0Ma + LlXMgn3l5FS7zWS2/yaC0ulD9t/Z3j+HqbR6VzC1PxGMi0z4Ir4AzWDHH4Ebt0AlZOPB + gZz19iC5jkInUQ8R1++IR/szZ9kvYD64BaQ20yFTwJftfygqsH9YFGHYb7+YFRGIvZpJ + mjLJPphxyP7zjHX2C0TH465jOVTjZfvRjPX2fZkRPNhv/3ZGBKnNM3G2MYOavmzvyDlg + by7S/VUHIux4v72E/KsVs31usdM+J+MDe2FWREbSCzKq7LlFv7JPo4ZUzUGdupUk+9SM + ffb55MrM8GXNJzqHx/B5yMXn+91L7WdJpOkOLMkpPhDBxwYqs4vcEdyizK3MPpBTmeXO + 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 + 9mFFmQGySRJAs8pGNBjTEjlSbkQwYcDZN5oe1bYhS03qJ8SSrCkl8fzweDQZd1bPyJMt + gyLlhs4sN7GimbT2DU6XEe/Rfy7EtD+zu0aSP8NN2DU8kszE/xvpYn9hb0TfZLOis6OT + 2Br6N2jzXkzzlukt9ykld5eAk7MFt5UzDm4rIkXKZAP9BSjJaXbcaBTATFnNBXozVIwS + Y6LkRu14D34KqSZtDqk1lqvVVz0ltqin5N5CS+rVEj3XafVthVBaSvlOCT7DI2qT0ZKa + zsFeEQXGZUAm7NxqGdJvWjYnazPBJFdScu4f8Qge+a/o26+1iOejC9nFG/uiKqvl2kk5 + 0/Yo4TTNwUhZ3KTMTRFtEkNRkrQVQJS4ICLLpAUwgJQpG2UTN5m4QRTSEnibEVLNCS86 + +y6P5u0HlLaeIcpXipSyuIT+mzQN/W9JoO/cOqTFNQ+dc5xT0DnFiYV8x43zQvmNbt57 + /THW/COh7eTx698/ScFQXPoVC9N5y9+6JDJOAzedD3ngXr0C0gkSHV3SJdGZOlT5Vnnv + r8yrDK/vDne1NYXIHvdqNRxE+UQeoiqiNUTrY6MXyTAuI+3XE3Xacyf46Vx/gh64Ra/X + 9P8H7c+FBwplbmRzdHJlYW0KZW5kb2JqCjM5IDAgb2JqCjM3MDUKZW5kb2JqCjQwIDAg + b2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvQXNjZW50IDc3MCAvQ2FwSGVpZ2h0 + IDY4NCAvRGVzY2VudCAtMjMwIC9GbGFncyAzMgovRm9udEJCb3ggWy05NTEgLTQ4MSAx + NDQ1IDExMjJdIC9Gb250TmFtZSAvTEVVRFdIK0hlbHZldGljYSAvSXRhbGljQW5nbGUg + MAovU3RlbVYgMCAvTWF4V2lkdGggMTUwMCAvWEhlaWdodCA1MTMgL0ZvbnRGaWxlMiAz + OCAwIFIgPj4KZW5kb2JqCjQxIDAgb2JqClsgNjY3IDY2NyAwIDAgMCAwIDAgMCAwIDAg + MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2NjcgNjY3IDYxMSBdCmVuZG9iagoxMCAw + IG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvVHJ1ZVR5cGUgL0Jhc2VGb250IC9M + RVVEV0grSGVsdmV0aWNhIC9Gb250RGVzY3JpcHRvcgo0MCAwIFIgL1dpZHRocyA0MSAw + IFIgL0ZpcnN0Q2hhciA2NSAvTGFzdENoYXIgOTAgL0VuY29kaW5nIC9NYWNSb21hbkVu + Y29kaW5nCj4+CmVuZG9iago0MiAwIG9iagooTWFjIE9TIFggMTAuNi44IFF1YXJ0eiBQ + REZDb250ZXh0KQplbmRvYmoKNDMgMCBvYmoKKEQ6MjAxMTA5MjQxNzIxMDlaMDAnMDAn + KQplbmRvYmoKMSAwIG9iago8PCAvUHJvZHVjZXIgNDIgMCBSIC9DcmVhdGlvbkRhdGUg + NDMgMCBSIC9Nb2REYXRlIDQzIDAgUiA+PgplbmRvYmoKeHJlZgowIDQ0CjAwMDAwMDAw + MDAgNjU1MzUgZiAKMDAwMDAxOTI4NyAwMDAwMCBuIAowMDAwMDA1MTkzIDAwMDAwIG4g + CjAwMDAwMDMwMzEgMDAwMDAgbiAKMDAwMDAwNTA0NCAwMDAwMCBuIAowMDAwMDAwMDIy + IDAwMDAwIG4gCjAwMDAwMDMwMTEgMDAwMDAgbiAKMDAwMDAwMzEzNSAwMDAwMCBuIAow + MDAwMDA1MDA4IDAwMDAwIG4gCjAwMDAwMDQxMTIgMDAwMDAgbiAKMDAwMDAxOTAxOSAw + MDAwMCBuIAowMDAwMDEwNjM1IDAwMDAwIG4gCjAwMDAwMTQ3NjIgMDAwMDAgbiAKMDAw + MDAwMDAwMCAwMDAwMCBuIAowMDAwMDA3NDM1IDAwMDAwIG4gCjAwMDAwMDAwMDAgMDAw + MDAgbiAKMDAwMDAwMzI4NCAwMDAwMCBuIAowMDAwMDA0MDkyIDAwMDAwIG4gCjAwMDAw + MDQxNDggMDAwMDAgbiAKMDAwMDAwNDk4OCAwMDAwMCBuIAowMDAwMDA1MTI3IDAwMDAw + IG4gCjAwMDAwMDUzNzAgMDAwMDAgbiAKMDAwMDAwNTI0MSAwMDAwMCBuIAowMDAwMDA1 + MzQ4IDAwMDAwIG4gCjAwMDAwMDcyMzAgMDAwMDAgbiAKMDAwMDAwNjk1MSAwMDAwMCBu + IAowMDAwMDA1NDc3IDAwMDAwIG4gCjAwMDAwMDY5MzAgMDAwMDAgbiAKMDAwMDAwNzIx + MCAwMDAwMCBuIAowMDAwMDA3NTY5IDAwMDAwIG4gCjAwMDAwMTAzNjUgMDAwMDAgbiAK + MDAwMDAxMDM4NiAwMDAwMCBuIAowMDAwMDEwNjExIDAwMDAwIG4gCjAwMDAwMTQ1NTcg + MDAwMDAgbiAKMDAwMDAxNDI3OCAwMDAwMCBuIAowMDAwMDEwODA5IDAwMDAwIG4gCjAw + MDAwMTQyNTcgMDAwMDAgbiAKMDAwMDAxNDUzNyAwMDAwMCBuIAowMDAwMDE0ODk2IDAw + MDAwIG4gCjAwMDAwMTg2OTEgMDAwMDAgbiAKMDAwMDAxODcxMiAwMDAwMCBuIAowMDAw + MDE4OTM3IDAwMDAwIG4gCjAwMDAwMTkxOTMgMDAwMDAgbiAKMDAwMDAxOTI0NSAwMDAw + MCBuIAp0cmFpbGVyCjw8IC9TaXplIDQ0IC9Sb290IDIwIDAgUiAvSW5mbyAxIDAgUiAv + SUQgWyA8MjY4N2YwZWFiYzU3YWZiMjFjMjIyNDkwYzVlMmFkMDc+CjwyNjg3ZjBlYWJj + NTdhZmIyMWMyMjI0OTBjNWUyYWQwNz4gXSA+PgpzdGFydHhyZWYKMTkzNjIKJSVFT0YK + MSAwIG9iago8PC9BdXRob3IgKHNob3NoaSkvQ3JlYXRpb25EYXRlIChEOjIwMTEwOTI0 + MTcwMzAwWikvQ3JlYXRvciAoT21uaUdyYWZmbGUgNS4zLjQpL01vZERhdGUgKEQ6MjAx + MTA5MjQxNzIwMDBaKS9Qcm9kdWNlciA0MiAwIFIgPj4KZW5kb2JqCnhyZWYKMSAxCjAw + MDAwMjA0MDAgMDAwMDAgbiAKdHJhaWxlcgo8PC9JRCBbPDI2ODdmMGVhYmM1N2FmYjIx + YzIyMjQ5MGM1ZTJhZDA3PiA8MjY4N2YwZWFiYzU3YWZiMjFjMjIyNDkwYzVlMmFkMDc+ + XSAvSW5mbyAxIDAgUiAvUHJldiAxOTM2MiAvUm9vdCAyMCAwIFIgL1NpemUgNDQ+Pgpz + dGFydHhyZWYKMjA1NDIKJSVFT0YK + + QuickLookThumbnail + + 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 + AAEAAQ== + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + キャンバス 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + Frame + {{-1538, 40}, {797, 979}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{-52, -21}, {662, 825}} + Zoom + 1 + ZoomValues + + + キャンバス 1 + 1 + 1 + + + + saveQuickLookFiles + YES + + diff -r bd7d39a4e57f -r f542388881a9 jssst2011/graffle/treeexample.graffle --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/graffle/treeexample.graffle Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,1248 @@ + + + + + ActiveLayerIndex + 0 + ApplicationVersion + + com.omnigroup.OmniGraffle + 138.30.0.155892 + + AutoAdjust + + BackgroundGraphic + + Bounds + {{0, 0}, {559, 783}} + Class + SolidGraphic + ID + 2 + Style + + shadow + + Draws + NO + + stroke + + Draws + NO + + + + CanvasOrigin + {0, 0} + ColumnAlign + 1 + ColumnSpacing + 36 + CreationDate + 2011-09-25 00:44:22 +0900 + Creator + shoshi + DisplayScale + 1 0/72 in = 1 0/72 in + GraphDocumentVersion + 6 + GraphicsList + + + Class + LineGraphic + Head + + ID + 42 + + ID + 54 + Points + + {86.5, 232.25} + {86.5, 207.75} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 41 + + + + Class + LineGraphic + Head + + ID + 40 + + ID + 53 + Points + + {187.024, 171.968} + {154.976, 135.032} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 44 + + + + Class + LineGraphic + Head + + ID + 40 + + ID + 50 + Points + + {142.905, 167.258} + {142.095, 139.742} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 43 + + + + Class + LineGraphic + Head + + ID + 40 + + ID + 49 + Points + + {99.4162, 171.531} + {128.584, 135.469} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 42 + + + + Class + LineGraphic + Head + + ID + 28 + + ID + 48 + Points + + {127.849, 104.111} + {100.151, 72.8886} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 40 + + + + Class + LineGraphic + Head + + ID + 28 + + ID + 47 + Points + + {86.5, 99.25} + {86.5, 77.75} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 38 + + + + Class + LineGraphic + Head + + ID + 28 + + ID + 46 + Points + + {45.1512, 104.111} + {72.8488, 72.8886} + + Style + + stroke + + HeadArrow + 0 + TailArrow + FilledArrow + + + Tail + + ID + 39 + + + + Bounds + {{180, 167.75}, {41, 39.5}} + Class + ShapedGraphic + ID + 44 + Shape + Circle + Style + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 li} + VerticalPad + 0 + + + + Bounds + {{123, 167.75}, {41, 39.5}} + Class + ShapedGraphic + ID + 43 + Shape + Circle + Style + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 li} + VerticalPad + 0 + + + + Bounds + {{66, 167.75}, {41, 39.5}} + Class + ShapedGraphic + ID + 42 + Shape + Circle + Style + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 li} + VerticalPad + 0 + + + + Bounds + {{66, 232.75}, {41, 39.5}} + Class + ShapedGraphic + ID + 41 + Shape + Circle + Style + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 a} + VerticalPad + 0 + + + + Bounds + {{121, 99.75}, {41, 39.5}} + Class + ShapedGraphic + ID + 40 + Shape + Circle + Style + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 ul} + VerticalPad + 0 + + + + Bounds + {{11, 99.75}, {41, 39.5}} + Class + ShapedGraphic + ID + 39 + Shape + Circle + Style + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 h1} + VerticalPad + 0 + + + + Bounds + {{66, 99.75}, {41, 39.5}} + Class + ShapedGraphic + ID + 38 + Shape + Circle + Style + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 img} + VerticalPad + 0 + + + + Bounds + {{66, 37.75}, {41, 39.5}} + Class + ShapedGraphic + ID + 28 + Shape + Circle + Style + + Text + + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural + +\f0\fs24 \cf0 html} + VerticalPad + 0 + + + + Bounds + {{274, 52}, {285, 204}} + Class + ShapedGraphic + FitText + YES + Flow + Resize + FontInfo + + Font + Helvetica + Size + 13 + + ID + 3 + Shape + Rectangle + Style + + fill + + Draws + NO + + shadow + + Draws + NO + + stroke + + Draws + NO + + + Text + + Align + 0 + Pad + 0 + Text + {\rtf1\ansi\ansicpg932\cocoartf1038\cocoasubrtf360 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural + +\f0\fs28 \cf0 <html lang="ja">\ + <h1>Hello!</h1>\ + <img src="a.png" \ + style="float: left;" alt="test"/>\ + <ul>\ + <li>text1</li>\ + <li>text2</li>\ + <li>\ + <a href="http://www.google.co.jp">text3</a>\ + </li>\ + </ul>\ +</html>} + VerticalPad + 0 + + Wrap + NO + + + GridInfo + + GuidesLocked + NO + GuidesVisible + YES + HPages + 1 + ImageCounter + 1 + KeepToScale + + Layers + + + Lock + NO + Name + レイヤー 1 + Print + YES + View + YES + + + LayoutInfo + + Animate + NO + circoMinDist + 18 + circoSeparation + 0.0 + layoutEngine + dot + neatoSeparation + 0.0 + twopiSeparation + 0.0 + + LinksVisible + NO + MagnetsVisible + NO + MasterSheets + + ModificationDate + 2011-09-25 01:58:05 +0900 + Modifier + shoshi + NotesVisible + NO + Orientation + 2 + OriginVisible + NO + PageBreaks + YES + PrintInfo + + NSBottomMargin + + float + 41 + + NSLeftMargin + + float + 18 + + NSPaperSize + + coded + BAtzdHJlYW10eXBlZIHoA4QBQISEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAx7X05TU2l6ZT1mZn2WgVMCgUoDhg== + + NSRightMargin + + float + 18 + + NSTopMargin + + float + 18 + + + PrintOnePage + + QuickLookPreview + + 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 + 91hzQTmsJ/iAtxdLGXCoAKVMuA6ELCIO2PTsBIZGEJbRteB1SCJ0BYsFx288hyUVQ2Pj + gPdJNoCtzUfZTSFU9nk+l/GXKz5SCZL5qGeNKTc29r1/gTZqQfLeg3vEtnyD7ncLIZ2m + c8JotRDSn/FoIZRvrVQtz2Ks05EuM+F0ucxLZbChaEVQvrVx6Rxbn6X8fv8zJ899Tgpl + bmRzdHJlYW0KZW5kb2JqCjYgMCBvYmoKMjY3NAplbmRvYmoKMyAwIG9iago8PCAvVHlw + ZSAvUGFnZSAvUGFyZW50IDQgMCBSIC9SZXNvdXJjZXMgNyAwIFIgL0NvbnRlbnRzIDUg + MCBSIC9NZWRpYUJveCBbMCAwIDU1OSA3ODNdCj4+CmVuZG9iago3IDAgb2JqCjw8IC9Q + cm9jU2V0IFsgL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSSBdIC9Db2xv + clNwYWNlIDw8IC9DczIgMTEgMCBSCi9DczEgOCAwIFIgPj4gL0ZvbnQgPDwgL0YxLjAg + MTIgMCBSID4+IC9YT2JqZWN0IDw8IC9JbTEgOSAwIFIgPj4gPj4KZW5kb2JqCjkgMCBv + YmoKPDwgL0xlbmd0aCAxMCAwIFIgL1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdl + IC9XaWR0aCAxMjYgL0hlaWdodCAxMjQgL0ludGVycG9sYXRlCnRydWUgL0NvbG9yU3Bh + Y2UgMTMgMCBSIC9JbnRlbnQgL1BlcmNlcHR1YWwgL1NNYXNrIDE0IDAgUiAvQml0c1Bl + ckNvbXBvbmVudAo4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ae3QAQ0A + AADCoPdPbQ43iEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBg + wIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYM + GDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIAB + AwYMGDBgwIABA08DA7cYAAEKZW5kc3RyZWFtCmVuZG9iagoxMCAwIG9iagoyMjgKZW5k + b2JqCjE0IDAgb2JqCjw8IC9MZW5ndGggMTUgMCBSIC9UeXBlIC9YT2JqZWN0IC9TdWJ0 + eXBlIC9JbWFnZSAvV2lkdGggMTI2IC9IZWlnaHQgMTI0IC9Db2xvclNwYWNlCi9EZXZp + Y2VHcmF5IC9JbnRlcnBvbGF0ZSB0cnVlIC9CaXRzUGVyQ29tcG9uZW50IDggL0ZpbHRl + ciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB7ZvnWxNrE8atIL2FTkJIILREurQTUMFE + aVIEgUAOEARDEYKCQJQikWgAkWoEAYMUDaIUEdRzrvOvvTPPbqjBco6y7wfngyQrF7+5 + 75l5drP75Nix3/Hbgd8O/F87cBzjxJ4gh3550ibsyZMnT+0KeEuSgf/+ZSlQgoF7GsLC + wsKSDniJR05RKfySBAiakAF75swZK2traxsS8MIKDlhiDlQGPzkBCn0KRFsg18bG1tbO + HsPBgfyws7W1scEcMIFTWIWflwDNPn0aNCMZoI5OTs4uLiwSLi7OTk6OkAZmAB6gAz+N + j2wsNai2tgHJjsBlubq5u3t40uHh7u7myoIcHO3tbDEBUoKfod/EtkTDEe3CcnP38PLy + YbM5vr5cCF9fDpvt4+Xl4e7GcsEEsAS0Af/Rfxzrk2i5FRjuAGgge7M5XD8e3z9AQEeA + P5/nx+WwvSEDSMABSkD4xP9/P4G0cAvCdnRmuXl4+XC4PH6AICg4RCgUic5CiERCYUhw + kCCAz+NyfLw83FjOjoRvQer/r+VTBd9mu3t6s7k8fwGAz4ZFREZFR8ecg4iJjo6KjAg7 + CykI/Hlctren+z7+v5JPwS2h1+xBt7unD8ePLwgWng2PjD4XG5/wh1iclJScnJQkFv+R + EB97Ljoy/KwwWMD34/hQfOg/S0r+j+OJ69DoVjZ2Dk7I9uUFBIWKwqNi4hLEyecvplyS + SKWXIaRSyaWUi+eTxQlxMVHhotCgAJ4v8p0c7KD8Fqeh+j/sPsJPARyEO7m4eXgDO1gY + FhkTl5h0IUVyOS0j82p2Ti6JnOyrmRlplyUpF5IS42Iiw4TBwPf2cHNxsgf5UP0fxgMc + ZtzyjI0tCvdi+wUECcOiYhPEF1KlaZnZufkFhcWyktJSuby0tERWXFiQn5udmSZNvSBO + iI0KEwYF+LG9UL6tDeX+D6mnSw6uOzq7evpw+YHITkxOkaZn5eYXykr/LFdUVlVV34So + rqqqVJT/WSorzM/NSpemJCciP5DP9fF0dXYE93+0+LRyK3AdhHN4gpCzkbGJ51MvZ2QD + Wl5eWa2srW9oVDWRUDU21NcqqyvL5ZBAdsbl1POJsZFnQwQ8Dsq3p/HfrZ6CQ78h3NuX + HySMiElITrmSmVtQLK+4oaxrUN1uvtvarlbfg1Cr21vvNt9WNdQpb1TIiwtyM6+kJCfE + RAiD+L7eFP4Mtv734knNKbiHDzcgOCwqTpwizcgtkJUpbtY1NDW3qu93dHX3aDQPITSa + nu6ujvvq1uamhrqbijJZQW6GNEUcFxUWHMD18SDqKfx3Dd4O3NWT7ScIDY9JOC9Jz86X + lVUq61WA7ujueah9rOvrHyDR36d7rH3Y090BCajqlZVlsvzsdMn5hJjwUIEf29MVzf9u + PBk1S7Qd4LxAYUSs+OLlrLwiuUJZ39TS3tGt0er6BwafDg+Pjo5BjI4ODz8dHOjXaTXd + He0tTfVKhbwoL+vyRXFshDCQR+Oh9WDwvql+D5wfKIqMS0pNyy4oqaiua2pRd/b06gYG + h0bGxvXPJybpmHiuHx8bGRoc0PX2dKpbmuqqK0oKstNSk+IiRYH8H8KD77DIUMr5QaKo + +GRJRm6hvLKmobm9o0erezI0Oq6feDE9/dJgMMxCwI+X09MvJvTjo0NPdNqejvbmhppK + eWFuhiQ5PkoUROPJqvct8dtwFtgOcCh55rXisqr6ptaOB9q+weEx/eTUjGF2bm5+YZGO + hfm5uVnDzNSkfmx4sE/7oKO1qb6qrPhaJhQf8GA+tt534InvZ6ztHFkeUHOES7PyZRXK + hmZ110Pdk+Gx5y+mDa/mFhbfGI1Lb5dJvF0yGt8sLsy9Mky/eD42/ET3sEvd3KCskOVn + SREPtfdgOdpZQ+d9o/Qo3dLK1sHF3cdPIIyKR3iJokZ1936PdmAI2DOzc4uvjUvLy+9X + VlZWScCL98vLS8bXi3OzM8AfGtD23L+rqlGUID4+Sijw83F3cbCFRQ+m/iuNZ/Ld2c2L + KxBGxCG8tLIWXNfoBkf0kzOz84uAfr+yura+vv5hg8QHeLm2ChksGRfnZ2cm9SODOg24 + X1tZivi4CKGA6+Xm/G3vj8N5DXx3Ynlx/EMiYpMlFLytq7dvaGxi2jC3aHz7bmUVwB8/ + ftzc3CKxuQlvIIXVlXdvjYtzhumJsaG+3q42Ci9Jjo0I8ed4sZwo7w8XT/uORecHh50T + X8oA22ub2ru0A8PPJl9S7LX1DSBvffr06TMd8HILMthYX6P4LyefDQ9ou9qbasH8jEvi + c2HBfCz9N7wn0m3snd29uQJRdGJKep5MUdPU1g1w/ZRh/vXS8gqyN5H85ctf2/Hly2c4 + tEn4y0uv5w1TesB3tzXVKGR56SmJ0SIB19sdvYfGO0w8kU75HhAaEX/hSk5RuVLVCspH + 9NOzC8bl96vABtWfKfLfdJAsMIEt4K++XzYuzE7rR0B9q0pZXpRz5UJ8RGgA5f1XGo+W + 7uLO5gWHxSZJrl4vu9nY2tlL4IvG5RUoN+im2CY09RMTQP4mNMDKsnGR4Hs7Wxtvll2/ + KkmKDQvmsd1dvioepw2ku2K/g+8Z+fKqWy0dD/uH9dOvFo3vVohwc2zMgOaj/JV3xsVX + 0/rh/ocdLbeq5PkZ4D32vSs0Hoo3O3SUdBh1aDkYtiu5MkXdnXsa3ZB+ahbgq+sonHi+ + V7fpHeGj/PVVwM9O6Yd0mnt36hSy3CswdtB4MPSHV/74CVhoKOmiaLEk63qZUtXW/Xhw + /IXBBD9MOJUALZ/GG16MDz7ublMpy65nScTYeCgelhzzfQfGw9mFkh5/IS2v5Ab4rh0Y + m3w5b1wG5VtUxU1S//77Hzp2jlDV3wL1y8b5l5NjA1rw/kZJXho0HhGPlTdrPRhvYWXr + yIKqo/SrheU1t9WaPij63BtoOLCdKN9BmeD//LNzjMKD+pXlN3NQ+j6N+nZNeeFVWjzO + vIXZoUPjrWHWffjB4XEgvbSqobXrEfg+u/jWHHxb+m46Nh/0PuLfLs6C94+6WhuqSkF8 + XHgw3wdmHvrOnPXEeAeWp2+AMPqPSyC9FlpuYGQCfH+3trFf+Y5w6tW2fBq/sfYOvJ8Y + GYDGqwXxl/6IFgb4erKw78xYTxnv5OrtFxQWCw1fAtK7Hz19NvXqNfq+Rbp9m7FL+D46 + UQ/rDnj/+tXUs6ePukF8CbR9bFiQn7erk3nrgU6MZ/NDIhJSMgrKlLfvafpB+oLx/X74 + fuF7E0D1iH9vXADx/Zp7t5VlBRkpCREhMHRovZnCQ9nP2KDxsNKIJdnFivq7ndrBcZS+ + +uHjp8/wN03KzcN3yg+/+vnTxw+rKH58UNt5t15RnA19JxTQ1h8sPJbd1tHVizI+T16t + au/pG34OVTdJ/xZ8N54WP//y+XBfT7uqWp5HWe/l6mhrrvAnTlrAUoMdTxlfc+d+L8w6 + Nvxe6Ycpx+N0grR4bHuY+d77d2oo67HrYcGxONh2prL7C6Og44vA+C7oOZz1tQ3ScvRf + /hp8Fx7Eb6zhzEPfdYH1RdD1UUJ/U+H3LfU47VTZRTFJUuj4xrYH28Zj1b8LvgsPlYe+ + I9Y/aGuErpcmxYiowh+ceNJ0uNAF4rxdkyub1JqB0UkDGr+J0/aj9C+fNj+A9YbJ0QGN + ukkpv4aFD+R6sRxh4ve3HdJtYdp5uNCl55fVNHeYOp4YT8MPzPn+Qph+D4duw9T1Hc01 + ZfnpuNzxcOLN0KHlSdPhtGcWVtS1dJKywzr3cev7jd9t/dZHWO9I4Ttb6ioKM8nEY9tB + 0++7vDp+8rSVnTOc2kMjE1OzihS3WrvhxD5D5g2MpyTtF2r+PfW7IJ4UfgZO892ttxRF + WamJkaG43thZHaDjwMEphu1PFvniGw1tD3Qw7QtLsMqa6OZhB48SPKGvLC3AxOsetDXc + KCZLPWn6gyMHp1drexcPDpxiYKWTVTXCWjMyYUA6Nh35gwc55o+Y6JvrQDdMjMB601gl + I6tdAMfDxd4aTrJ7R26bjuf2nJIqlVrTv93ydMebZx08StH/2m76fo1aVVWSg+f4r9Jh + lRfFiKU5JdV7Bu4/0nHkqktypGIy8IdrJ3RcbMzRD4o87AiK/2tHO0U3LTffoDOmHbqO + wboz1vOMzjuzax3QmVznmT3H4UUlk+d3s9c25Hr6l1/bHGP0uu4Yw9e0put5cmH3a67n + A/0Ou55n9rMM05/j8OYBU59hoe2oj5F4cfWLPr9zDv38fgw/zTB374LZ+zaU9UzdsyLW + M3e/DqzHvmPoXiVaz9x9WrAexWPlmbhHvX1/3pPzC+7Pw2Mx6hb1vs+v25+paPHMPJsA + 68nzMIaey1CVZ+qZFBGPD2GZeR5n8p6ZZ5FAp54HMvMcdtt7JyaeQR/bwcPOgyN//k55 + b9r4cOR7D/bij3rfBfEe1nt628dR7znZjWcd/X6bY8zuNaLxpPWOfp8Vek82uDGzxwzw + cLpjbH8dwcOay9DeQgqPu44Y2VcJ1zt08RnZU7qNZ2g/Le0+Vh/3MR/1XmJKPlzrMbOP + GvFU9ZF/9HvId/GZ2D8PeKIfFx8wAAbgaL87sIvPyPcmkE8bQL7CcNTfGSF8KoETjHxf + xpQAzAB+m+HovytEJYBFMH1hiWSC/5BDpv///fO3A78d+O2AGQf+B8YpWJcKZW5kc3Ry + ZWFtCmVuZG9iagoxNSAwIG9iagozNDg3CmVuZG9iagoxNiAwIG9iago8PCAvTGVuZ3Ro + IDE3IDAgUiAvTiAzIC9BbHRlcm5hdGUgL0RldmljZVJHQiAvRmlsdGVyIC9GbGF0ZURl + Y29kZSA+PgpzdHJlYW0KeAHVWWdUVMuy7r0nMwxhyDnnnHPOUXIShCEPOUeJIoooKiBR + DIAICGIiqggIioqIoIhiQBEBRQ+giEh6Gz2ee9+67/17f16vNT3frqqurtlVXd3VAwDH + AiUqKgxmACA8Ii7GwcyQ383dgx83CXCAF0CABADFLzbKwM7OGvyv7fs4Iom0MZkdXf+r + 2P/MYPQPiPUDALJD2L7+sX7hCL4GAGzoFxUTBwDqB0IfSYyLQjB6EMHMMYiBCH65g4N+ + 48Ud7PsLY9C/ZJwcjADAsAOAp6VQYoIAIAkjdP4EvyBED8kYACw5wp8aAQCTG4J1/YIp + /gBwlCEy0uHhkTu4H8Hivv+mJ+jfMIXi+49OCiXoH/z7tyAjkYmNqbFRYZTkXw//l114 + WDzyvn41MtLTRoTZ7viGFfnM+VOMrZBvbuSzFRX2y2eIDMQZEOHsiNB2sHSEr+2uv7Fu + YIypA4KRsZBdVJzhDkbeGRQYFWfn9Dc9PSXYyBbBtAi9OCDW5I+eMyEUyx2f0SH0KzHx + Ds4IFkZwT2yCowmCkYiC3qcEO7n+LfPNP8D4bzoMB1JNLX7LwGRqnMXOXMyIzwVDI612 + bEDmglWBFQgDASAexCB9BJAB1sAIGP/dy4BAQEE4CQgvFoSCDwgOR0ZEImMiEcz/t5zR + f1BMf40LQsb9d438wA+Rjf9nzt+z8SNz/tFJBf4I/kOnIHPs8Hasi/WmZv9rzj8SO/p+ + WSN/QX5efuOPTWhRtCJaBW2I1kHrojUAP5oVzQlk0MpodbQBWg+thfA0gCl4j2gO+mPj + jv7wK4EJZZHJmi7BCHfnt/v+4QKXX9LUf57/wwJAHV5oX/hjAQBxAUnIOgDAKDIqOYYa + FBzHb4Cs3ABpfosIP1lpfkV5BYUd9v+btpOzfhv71eFXLoJYH/2LFpIKgBofEo+3/0UL + GAeg6xWyTGn+RRPdj4QzGoB7Pn7xMQm/9SGPSCIBNIAeiVAOJCcKAXHkPSsCVaAF9IEJ + sAS7gBNwB3uQ+AlGYjAGJIK9IAvkgnxwDJwAFeA0qAH1oBlcAe3gBugFd8ADMAKegkkw + BWbAJ7AIvoN1CIJwEAligjggPkgEkoIUIXVIFzKBrCEHyB3ygYKgCCge2gvtg/KhQqgC + Ogs1QJehTqgXugc9hp5Db6F5aBn6CaNgWpgZ5oFFYTlYHTaArWAn2AsOgqPhFDgHLoDL + 4Gq4CW6De+EH8FN4Cv4Er6AAiohiRQmgZFDqKCPULpQHKhAVg0pHHUKVoKpRF1FdqLuo + MdQUagG1hsaimdD8aBkkTs3Rzmg/dDQ6HX0YXYGuR7eh+9Fj6LfoRfQWhoThxkhhNDEW + GDdMECYRk4spwdRhWjEDmKeYGcx3LBbLihXDqmHNse7YEGwq9jC2CtuC7cE+xk5jV3A4 + HAdOCqeD24Wj4OJwubhyXBPuFm4UN4P7gSfi+fCKeFO8Bz4Cn40vwTfiu/Gj+Fn8OoGB + IELQJOwi+BOSCUcJtYQuwiPCDGGdhpFGjEaHxokmhCaLpozmIs0AzUuar0QiUZCoQbQn + UomZxDLiJeIg8S1xjZZMK0lrROtJG09bQHuetof2Oe1XEokkStIneZDiSAWkBtJt0mvS + DzomOlk6Czp/ugy6Sro2ulG6L/QEehF6A/o99Cn0JfRX6R/RLzAQGEQZjBgoDOkMlQyd + DM8YVhiZGBUYdzGGMx5mbGS8xzhHxpFFySZkf3IOuYZ8mzzNhGISYjJi8mPax1TLNMA0 + w4xlFmO2YA5hzmduZh5mXmQhsyizuLAksVSy3GSZYkWxirJasIaxHmW9wjrO+pONh82A + LYAtj+0i2yjbKjsXuz57APsh9hb2p+w/Ofg5TDhCOY5ztHO84kRzSnLacyZynuIc4Fzg + YubS4vLjOsR1hesFN8wtye3Ancpdwz3EvcLDy2PGE8VTznObZ4GXlVefN4S3mLebd56P + iU+Xj8pXzHeL7yM/C78Bfxh/GX8//6IAt4C5QLzAWYFhgXVBMUFnwWzBFsFXQjRC6kKB + QsVCfUKLwnzCNsJ7hS8IvxAhiKiLBIuUitwVWRUVE3UVPSDaLjonxi5mIZYidkHspThJ + XE88Wrxa/IkEVkJdIlSiSmJEEpZUkQyWrJR8JAVLqUpRpaqkHktjpDWkI6SrpZ/J0MoY + yCTIXJB5K8sqay2bLdsu+0VOWM5D7rjcXbkteRX5MPla+UkFsoKlQrZCl8KyoqSin2Kl + 4hMlkpKpUoZSh9KSspRygPIp5QkVJhUblQMqfSqbqmqqMaoXVefVhNV81E6qPVNnVrdT + P6w+qIHRMNTI0LihsaapqhmneUXzLy0ZrVCtRq05bTHtAO1a7WkdQR2KzlmdKV1+XR/d + M7pTegJ6FL1qvXf6Qvr++nX6swYSBiEGTQZfDOUNYwxbDVeNNI3SjHqMUcZmxoeMh03I + Js4mFSavTQVNg0wvmC6aqZilmvWYY8ytzI+bP7PgsfCzaLBYtFSzTLPst6K1crSqsHpn + LWkdY91lA9tY2hTZvLQVsY2wbd8FdlnsKtr1yk7MLtruuj3W3s6+0v6Dg4LDXoe7jkyO + 3o6Njt+dDJ2OOk06izvHO/e50Lt4ujS4rLoauxa6TrnJuaW5PXDndKe6d3jgPFw86jxW + dpvsPrF7xlPFM9dz3EvMK8nr3h7OPWF7bnrTe1O8r/pgfFx9Gn02KLso1ZQVXwvfk76L + fkZ+pX6f/PX9i/3nA3QCCgNmA3UCCwPngnSCioLmg/WCS4IXqEbUCupSiHnI6ZDV0F2h + 50O3w1zDWsLx4T7hnRHkiNCI/kjeyKTIx1FSUblRU9Ga0SeiF2OsYupioViv2I44ZuRw + OBQvHr8//m2CbkJlwo9El8SrSYxJEUlDyZLJecmzKaYp51LRqX6pfXsF9mbtfZtmkHY2 + HUr3Te/LEMrIyZjJNMusz6LJCs16mC2fXZj9bZ/rvq4cnpzMnOn9Zvsv5NLlxuQ+O6B1 + 4PRB9EHqweE8pbzyvK1D/ofu58vnl+RvHPY7fP+IwpGyI9sFgQXDR1WPnjqGPRZxbPy4 + 3vH6QsbClMLpIpuitmL+4kPF3054n7hXolxyupSmNL50qsy6rKNcuPxY+UZFcMXTSsPK + lpPcJ/NOrlb5V42e0j918TTP6fzTP89Qz0ycNTvbVi1aXVKDrUmo+VDrUnv3nPq5hjrO + uvy6zfMR56fqHer7G9QaGhq5G49egC/EX5hv8mwaaTZu7rgoc/FsC2tL/iVwKf7Sx8s+ + l8evWF3pu6p+9eI1kWsnW5laD7VBbclti+3B7VMd7h2POy07+7q0ulqvy14/f0PgRuVN + lptHu2m6c7q3b6XcWumJ6lnoDeqd7vPum7ztdvtJv33/8IDVwOAd0zu37xrcvTWoM3jj + nua9zvvq99sfqD5oG1IZan2o8rB1WHW47ZHao44RjZGux9qPu0f1RnvHjMfuPLF48uCp + 7dPH487jE888n01N+E/MPQ97vvQi4cX6ZOZLzMtDrxhelbzmfl39RuJNy5Tq1M23xm+H + 3jm+m5z2m/70Pvb9xkzOB9KHklm+2YY5xbkb86bzIx93f5z5FPVpfSH3M+Pnk1/Ev1z7 + S/+voUW3xZmlmKXt5cNfOb6e/6b8rW/FbuX19/Dv66uHfnD8qF9TX7v70/Xn7HriBm6j + bFNis2vLauvldvj2dhQlhvLrLIBCejgwEIDl80gN4Y7UDiMA0ND9ril+SSDlCoTIIBiF + VE78QBs5oxWBYYgMuUH1MAyHw9OoANQyOh8jj5nCVuFC8MYEURo6IkyLIjHSSdFbMMQw + niW/YuZl8WW9wo7m8OHs4ebjyeNd4vcSeCCkKXxOlFksU3xW0laqRYZO1k/uqvy6opZS + rPJplX7Vt2prGrSanFqS2uo6xrq2eh76wQYJhrlGJcb1Jl2m981emM9ZrFqhrRlsuG3F + dinYadobOlg42jo5ODu7uLq6ubm7e3h47Pbw9PDy2OPm7eLjQLHxNfXT9VcJkAzkC2IK + xgWvU7+EvA19EnYXWZUXIquijkQnx1BiDeI44r7E9yaUJkYmWSYLJW+mPEtt2XswzSdd + LYMOWVvXswqzg/fp5DDlzO3vzi06EHxQO481bzMffVj3SPNR9WNXjm8W8RVLnZAtkS9V + KFMqV65QqVQ5qVqlecr0dMCZsrMTNSy1Bue86iLOp9TnNhxvrLxwrqmlufPi7ZbRS5+v + CFyNujbSJtEe1lHW2db16Prsja1u1lsKPS69hX1z/eYDlXce3n07uHgf+0BkyOyh/3Ds + o7AR58dqo7xjNGNrT6afPhy/9axr4sbzWy96J7tftrw6/jrsjeEUx9Ty25F3ndP17ytn + jn3YP5s8Fz7v89Hmk9ICeeHT5ztfav/KXQxZsl1W/ir4TWLF63v3D/m14p9vNjg23bZq + t7d34gQQARdySnQAKaAJfIDEoEioB+aCs+FlVBTqB/ogRgAzgI3DyeK+4vsIVTRpRH9a + N5IjnRu9L0M8Yz65nmmE+QerGJsXexHHIy4StzXPYd5hfpKAveBxoRERoqiJWIJ4ncRj + yW/SDDLisspyGvIaCkqKEkq8ygwqkMo31RlktxrU6NRs0KrQztdJ1Q3R261va2BoqGYk + ayxswmnKYIY1WzdftJixnLAasu62uWRbvavILsc+1oHiaOek6yzlwu6KcV1ye+k+6HF1 + 92nPPK/YPV7eJj7SFCbKD99Xfr3+tQEHA0ODbILlqIzUryFPQ9vCysKTI9wiVaPIUfPR + t2KKYv3jVOIx8eMJ5xLjk0ySmZOnU66kZu61TeNO+5jelXEkMyTLIdsYiQzN/aq58gek + Dork8R3iyCcfJh5BH9ks+H506djy8bUiXDH7CfEStVLjMrvy3RVBlTEn06oOnCo8ffLM + +bMd1aM1a+ck6jzP59e3Nrxo3GoSaDa5GNxy5FL75S9XVa7tb33cTurQ6aR2lV9/cGO7 + W+VWWE9t78vbjP36A9Q7+XcbBwfvzT8gDSk99BjOftQ08mwUO6b8xPtpznjts/6JDy9o + JuVeOr1Kfn3qzd2p1XcK0zHvr84sz0rPBc3XfHyzwPXZ7cvJvxaXEr7KrJBXadbgn582 + rm9R//Y/DWAD0sAcqU1LwX0IC5lBx6FpWAc+iyKh9qNx6EKMKKYH648j4+7hDxJsafho + 1ohPaDtI5+jK6QsZjjIWkiuYzjG3sQyyvmZb4yBzynCZclN49vKW8l3k7xN4Ijgj9Fl4 + WWQROTVNiPdJnJPcJ+UhLScDyYzK1solylsq8CusKg4r1SmnqzirSqvBahPqzRrZmi5a + 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 + Z6NSgVZ6jVfGT+O58cX4ZWwYz4B+rHbXe3z/6eMVdde2Pjz5jXrcOa69nRtVYVZxZQvd + /8cyhI/ZJzmmwdOhWVhr2HbkD5rMTLAMKMR/BT6X+pITVdzV7u24RRLMUD4sbCW6S1Ru + KdTqPYNKrBwr2AB2cJLELFocuFNrujl4d9giem35TVey64b++vZ6+9ryHm3KqCkoE82z + RGaUsVuj5N142/1mkRGfODq+572KWsn+SUUQP4U5WiryFFX0VlDWxG9nDn4btn5cP6Xn + 9UH9PAk9rZ/Rr+ijEb4MdEnPwnNRH6NJ8LBpIeISoIqDM9ROVGONA+Ip8fK0W2SR/Q9A + Gf1mCmVuZHN0cmVhbQplbmRvYmoKMTkgMCBvYmoKNzA0CmVuZG9iagoxMSAwIG9iagpb + IC9JQ0NCYXNlZCAxOCAwIFIgXQplbmRvYmoKMjAgMCBvYmoKPDwgL0xlbmd0aCAyMSAw + IFIgL04gMyAvQWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUg + Pj4Kc3RyZWFtCngBhVTPaxNBFP42bqnQIghaaw6yeJAiSVmraEXUNv0RYmsM2x+2RZBk + M0nWbjbr7ia1pYjk4tEq3kXtoQf/gB568GQvSoVaRSjeqyhioRct8c1uTLal6sDOfvPe + N+99b3bfAA1y0jT1gATkDcdSohFpbHxCavyIAI6iCUE0JVXb7E4kBkGDc/l759h6D4Fb + VsN7+3eyd62a0raaB4T9QOBHmtkqsO8XcQpZEgKIPN+hKcd0CN/j2PLsjzlOeXjBtQ8r + PcRZInxANS3Of024U80l00CDSDiU9XFSPpzXi5TXHQdpbmbGyBC9T5Cmu8zuq2KhnE72 + DpC9nfR+TrPePsIhwgsZrT9GuI2e9YzVP+Jh4aTmxIY9HBg19PhgFbcaqfg1whRfEE0n + olRx2S4N8Ziu/VbySoJwkDjKZGGAc1pIT9dMbvi6hwV9JtcTr+J3VlHheY8TZ97U3e9F + 2gKvMA4dDBoMmg1IUBBFBGGYsFBAhjwaMTSycj8jqwYbk3sydSRqu3RiRLFBezbcPbdR + pN08/igicZRDtQiS/EH+Kq/JT+V5+ctcsNhW95Stm5q68uA7xeWZuRoe19PI43NNXnyV + 1HaTV0eWrHl6vJrsGj/sV5cx5oI1j8RzsPvxLV+VzJcpjBTF41Xz6kuEdVoxN9+fbH87 + PeIuzy611nOtiYs3VpuXZ/1qSPvuqryT5lX5T1718fxnzcRj4ikxJnaK5yGJl8Uu8ZLY + S6sL4mBtxwidlYYp0m2R+iTVYGCavPUvXT9beL1Gfwz1UZQZzNJUifd/wipkNJ25Dm/6 + j9vH/Bfk94rnnygCL2zgyJm6bVNx7xChZaVuc64CF7/RffC2bmujfjj8BFg8qxatUjWf + ILwBHHaHeh7oKZjTlpbNOVKHLJ+TuunKYlLMUNtDUlLXJddlSxazmVVi6XbYmdMdbhyh + OUL3xKdKZZP6r/ERsP2wUvn5rFLZfk4a1oGX+m/AvP1FCmVuZHN0cmVhbQplbmRvYmoK + MjEgMCBvYmoKNzM3CmVuZG9iago4IDAgb2JqClsgL0lDQ0Jhc2VkIDIwIDAgUiBdCmVu + ZG9iago0IDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA2MTIgNzky + XSAvQ291bnQgMSAvS2lkcyBbIDMgMCBSIF0gPj4KZW5kb2JqCjIyIDAgb2JqCjw8IC9U + eXBlIC9DYXRhbG9nIC9PdXRsaW5lcyAyIDAgUiAvUGFnZXMgNCAwIFIgL1ZlcnNpb24g + LzEuNCA+PgplbmRvYmoKMiAwIG9iago8PCAvTGFzdCAyMyAwIFIgL0ZpcnN0IDI0IDAg + UiA+PgplbmRvYmoKMjQgMCBvYmoKPDwgL1BhcmVudCAyNSAwIFIgL0NvdW50IDAgL0Rl + c3QgWyAzIDAgUiAvWFlaIDAgNzgzIDAgXSAvVGl0bGUgKP7/MK0w4zDzMNAwuVwwMDAg + XDAwMDEpCj4+CmVuZG9iagoyNSAwIG9iago8PCA+PgplbmRvYmoKMjMgMCBvYmoKPDwg + L1BhcmVudCAyNSAwIFIgL0NvdW50IDAgL0Rlc3QgWyAzIDAgUiAvWFlaIDAgNzgzIDAg + XSAvVGl0bGUgKP7/MK0w4zDzMNAwuVwwMDAgXDAwMDEpCj4+CmVuZG9iagoyNiAwIG9i + ago8PCAvTGVuZ3RoIDI3IDAgUiAvTGVuZ3RoMSAxMjg2NCAvRmlsdGVyIC9GbGF0ZURl + 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 + 5BxN8ZSsXORjzfwCOPGG1aBp8azv/gVlT3U95QvEZyTrsjN07CRtuP3X2IWZjMXh7eGv + Xg4v6uOE5zWcaBUeT2RmDPbQ9xFeQexGt0PsRkOuQcqiwH/XmZ0a7OCKbAoOscp4mCYK + YLvNEVBwei7G7rJT9kHe5ox/T1w8HAWN6pRLI84fHOwPh3GlOCtTBJ8aR2M3ojOHzRXP + OcHaeuj2vr6hryGK2/ETq98GQd10W0zUgYVA7rU776CZvRROtRVt3kbolX+RNviO8B/9 + EqGQBjli5Tdk0fdj0fdh5G1YCipHlfCl4hT4OJd8j1iDbpa/mKyDryBvQbPRHNSA5sJ3 + hfOGv5EjmgHLw3DkrdvMsrmVU6tSqttWdLS1L13YAjXRWtIEjCt854ngGztE3lugiwBX + AK5CIwbACJAIkAtQDjALoBWgHWATwOMAzwP0AfQDXAS4AnAVJs0AGAESAXIBygFmAbQC + tANsAngc4HmAPoD+yPAPxkejeYzc43BxHC6/Lbyhffq4etjQY/rLGodnj8NzxuETxuHk + y9ob6SsZh08ch08ah1ePw8mK3NjfwnG4LDM3zG/RuPrF4/Al4/Cl4/Bl43DyDeSN48v/ + S3HDeLePq181Dl89Dl87Dr9jHA5rP2a8dePwO8fhd43DO8fi1+Xd9d8TKNh8CmVuZHN0 + cmVhbQplbmRvYmoKMjcgMCBvYmoKODI5MgplbmRvYmoKMjggMCBvYmoKPDwgL1R5cGUg + L0ZvbnREZXNjcmlwdG9yIC9Bc2NlbnQgNzcwIC9DYXBIZWlnaHQgNzE3IC9EZXNjZW50 + IC0yMzAgL0ZsYWdzIDMyCi9Gb250QkJveCBbLTk1MSAtNDgxIDE0NDUgMTEyMl0gL0Zv + bnROYW1lIC9RQlpGSkcrSGVsdmV0aWNhIC9JdGFsaWNBbmdsZSAwCi9TdGVtViAwIC9N + YXhXaWR0aCAxNTAwIC9YSGVpZ2h0IDU0MCAvRm9udEZpbGUyIDI2IDAgUiA+PgplbmRv + YmoKMjkgMCBvYmoKWyAyNzggMjc4IDM1NSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjc4 + IDI3OCAwIDU1NiA1NTYgNTU2IDAgMCAwIDAgMCAwIDI3OAoyNzggNTg0IDU4NCA1ODQg + MCAwIDAgMCAwIDAgMCAwIDAgNzIyIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw + IDAgMCAwCjAgMCAwIDAgMCAwIDU1NiAwIDUwMCAwIDU1NiAyNzggNTU2IDU1NiAyMjIg + MjIyIDAgMjIyIDgzMyA1NTYgNTU2IDU1NiAwIDMzMwo1MDAgMjc4IDU1NiAwIDcyMiA1 + MDAgNTAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg + MCAwCjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw + IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg + MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMAow + IDAgMCA1MDAgXQplbmRvYmoKMTIgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUg + L1RydWVUeXBlIC9CYXNlRm9udCAvUUJaRkpHK0hlbHZldGljYSAvRm9udERlc2NyaXB0 + b3IKMjggMCBSIC9XaWR0aHMgMjkgMCBSIC9GaXJzdENoYXIgMzIgL0xhc3RDaGFyIDIy + MyAvRW5jb2RpbmcgL01hY1JvbWFuRW5jb2RpbmcKPj4KZW5kb2JqCjMwIDAgb2JqCihN + YWMgT1MgWCAxMC42LjggUXVhcnR6IFBERkNvbnRleHQpCmVuZG9iagozMSAwIG9iagoo + RDoyMDExMDkyNDE3MjExNlowMCcwMCcpCmVuZG9iagoxIDAgb2JqCjw8IC9Qcm9kdWNl + ciAzMCAwIFIgL0NyZWF0aW9uRGF0ZSAzMSAwIFIgL01vZERhdGUgMzEgMCBSID4+CmVu + ZG9iagp4cmVmCjAgMzIKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDI0OTIwIDAwMDAw + IG4gCjAwMDAwMTUyNjQgMDAwMDAgbiAKMDAwMDAwMjc5MCAwMDAwMCBuIAowMDAwMDE1 + MTAxIDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAwMjc3MCAwMDAwMCBu + IAowMDAwMDAyODk0IDAwMDAwIG4gCjAwMDAwMTUwNjUgMDAwMDAgbiAKMDAwMDAwMzA1 + NSAwMDAwMCBuIAowMDAwMDAzNTAzIDAwMDAwIG4gCjAwMDAwMTQxNjggMDAwMDAgbiAK + MDAwMDAyNDY1MSAwMDAwMCBuIAowMDAwMDEzMzAzIDAwMDAwIG4gCjAwMDAwMDM1MjMg + MDAwMDAgbiAKMDAwMDAwNzIwMiAwMDAwMCBuIAowMDAwMDA3MjIzIDAwMDAwIG4gCjAw + MDAwMTMyODIgMDAwMDAgbiAKMDAwMDAxMzM0MCAwMDAwMCBuIAowMDAwMDE0MTQ4IDAw + MDAwIG4gCjAwMDAwMTQyMDUgMDAwMDAgbiAKMDAwMDAxNTA0NSAwMDAwMCBuIAowMDAw + MDE1MTg0IDAwMDAwIG4gCjAwMDAwMTU0NDEgMDAwMDAgbiAKMDAwMDAxNTMxMiAwMDAw + MCBuIAowMDAwMDE1NDE5IDAwMDAwIG4gCjAwMDAwMTU1NDggMDAwMDAgbiAKMDAwMDAy + MzkzMSAwMDAwMCBuIAowMDAwMDIzOTUyIDAwMDAwIG4gCjAwMDAwMjQxNzcgMDAwMDAg + biAKMDAwMDAyNDgyNiAwMDAwMCBuIAowMDAwMDI0ODc4IDAwMDAwIG4gCnRyYWlsZXIK + PDwgL1NpemUgMzIgL1Jvb3QgMjIgMCBSIC9JbmZvIDEgMCBSIC9JRCBbIDwyOWQwZmY4 + MzQ4NTFjZjVlMmU4M2MyMmZmMDI3MWU4Yz4KPDI5ZDBmZjgzNDg1MWNmNWUyZTgzYzIy + ZmYwMjcxZThjPiBdID4+CnN0YXJ0eHJlZgoyNDk5NQolJUVPRgoxIDAgb2JqCjw8L0F1 + dGhvciAoc2hvc2hpKS9DcmVhdGlvbkRhdGUgKEQ6MjAxMTA5MjQxNTQ0MDBaKS9DcmVh + dG9yIChPbW5pR3JhZmZsZSA1LjMuNCkvTW9kRGF0ZSAoRDoyMDExMDkyNDE2NTgwMFop + L1Byb2R1Y2VyIDMwIDAgUiAvVGl0bGUgKHRyZWVleGFtcGxlKT4+CmVuZG9iagp4cmVm + CjEgMQowMDAwMDI1NzkzIDAwMDAwIG4gCnRyYWlsZXIKPDwvSUQgWzwyOWQwZmY4MzQ4 + NTFjZjVlMmU4M2MyMmZmMDI3MWU4Yz4gPDI5ZDBmZjgzNDg1MWNmNWUyZTgzYzIyZmYw + MjcxZThjPl0gL0luZm8gMSAwIFIgL1ByZXYgMjQ5OTUgL1Jvb3QgMjIgMCBSIC9TaXpl + IDMyPj4Kc3RhcnR4cmVmCjI1OTU1CiUlRU9GCg== + + QuickLookThumbnail + + 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 + CzYAAAAAAAgACAAIAAgAAQABAAEAAQ== + + ReadOnly + NO + RowAlign + 1 + RowSpacing + 36 + SheetTitle + キャンバス 1 + SmartAlignmentGuidesActive + YES + SmartDistanceGuidesActive + YES + UniqueID + 1 + UseEntirePage + + VPages + 1 + WindowInfo + + CurrentSheet + 0 + ExpandedCanvases + + Frame + {{-1613, 117}, {801, 932}} + ListView + + OutlineWidth + 142 + RightSidebar + + ShowRuler + + Sidebar + + SidebarWidth + 120 + VisibleRegion + {{-46, 0}, {652, 778}} + Zoom + 1 + ZoomValues + + + キャンバス 1 + 1 + 1 + + + + saveQuickLookFiles + YES + + diff -r bd7d39a4e57f -r f542388881a9 jssst2011/index.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/index.html Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,347 @@ + + + + + +S5: An Introduction + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+ +
+
+

Cassandraと非破壊的構造を用いたCMSのスケーラビリティ検証環境の構築

+

琉球大学 玉城 将士

+

琉球大学 情報工学科 河野 真治

+
+ +
+

はじめに

+

本研究では,スケーラビリティのあるCMSを開発するため非破壊的木構造とCassandraを用いた設計と実装を行って来た.

+

今回は,CMSの非破壊的に編集する際に必要となる,効率的な二分木辞書の開発と

+

システムの検証を仮想マシンクラスタ上で行うために環境構築と管理ツールの開発を行った.

+
+
+ +
+

非破壊木構造を用いたCMS

+ +

本研究では,スケーラビリティのあるCMSを開発するために,コンテンツを非破壊的木構造を用いて管理する方法を採用した.

+

非破壊的木構造とは,木構造を並列に編集することの出来る方法である.

+

また,木構造を保存するためのバックエンドに分散データベースであるCassandraを使用することで,スケーラビリティを確保している.

+
+
+ +
+
+ +
+

非破壊木構造を用いたCMS

+ +

本CMSでは,コンテンツを木構造を用いて管理する.

+

木構造のノードは辞書と子供のリストを保持しており,辞書には自由に値を設定することが出来る.

+

非破壊的木構造は基本的なアイディアとして木構造を再編集せずに編集の際に木のノードの一部をコピーすることで元木構造の不変性を保証する.

+
+
+ +
+
+ +
+

非破壊木構造を用いたCMS

+

木構造を用いたコンテンツを表すには以下のような例があげられる.

+
+ +
+
+ +
+

CMSの問題点

+

例で示したとおり,ノードはそれぞれ要素の辞書と子供のリストを保持する.編集の際に一部のノードをコピーするため,辞書とリストのコピーが必要となる.

+

通常のHashTableのコピー自体には要素数分のコピーが必要になり,これは非効率的である.

+

そのため,本研究ではこれを改良するために,AVLと非破壊的木構造を利用したコピーの計算量がO(1)であり,挿入・削除がO(log n)な辞書を開発する.

+
+ +
+

AVLとは?

+ +

バランス木の一つで,すべての節において,左部分木と右部分木の高さの差が1以内に収まらなければならないという制約のある二分木である.

+

ある節において制約が崩れる場合,木の回転を行うことによりバランスを回復させることが出来る.

+
+
+ +
+
+ +
+

非破壊的木構造

+ +

編集元の木構造を破壊することなく,必要な部分のみコピーオンライトで新しい木構造を構成する方法である.

+

編集元の木構造は不変なため,並列に読み書きすることが可能である.

+
+
+ +

FをGに書き換えた場合の例

+
+
+ +
+

NDAVLTreeMap

+ +

非破壊的木構造(Non-Destructive Tree)とAVLを組み合わせた辞書であり,以下の特徴がある.

+
    +
  • 並列に読み書きができる.
  • +
  • AVLの特徴である検索・挿入のO(logN)は崩さない.
  • +
  • 辞書のコピー自体は二分木のルートを共有するだけで良い.
  • +
+
+
+ +
+

NDAVLTreeMap

+

例:挿入の操作

+ +

二分木辞書に7を挿入する.挿入位置を検索する同時にノードの複製を行い,挿入位置に7を挿入する.

+
+
+ +
+
+ +
+

NDAVLTreeMap

+

例:挿入の操作

+ +

挿入したノードより親ノードへと辿り,回転が必要な場合は回転処理を行う.

+
+
+ +
+
+ +
+

NDAVLTreeMap

+

例:挿入の操作

+ +
    +
  • 最後にCAS(CompareAndSwap)を用いて辞書の二分木への参照を置き換える.
  • +
  • CASに失敗した場合は,最新の二分木を用いて再度編集を行う.
  • +
+
+
+ +
+

NDAVLTreeMap

+

例:辞書のコピー

+ +

非破壊的木構造は編集が完了した木構造は破壊されない,そのため不変であり,複数の辞書で二分木を共有しても問題はない.

+
+
+ +
+

ここまでのまとめ

+ +
    +
  • 本研究では,木構造を用いたCMSの開発を行なってきた.
  • +
  • CMSはコンテンツを編集する際に,モデルである木構造を非破壊的に編集する.
  • +
  • 非破壊編集時に,ノードのコピー内部で辞書のコピーが発生するため,通常の辞書では非効率的.
  • +
  • 非破壊的木構造とAVLを合わせた辞書を用いることによりコピーのコストを抑えることが出来る.
  • +
+
+
+ +
+

スケーラビリティ検証環境の構築

+ +

システムのスケーラビリティ検証を行うためには,並列に負荷をかけてスループットの計測を行う必要があり,クラスタ環境が必要となる.

+

そこで,高性能サーバーと仮想化を用いて,ベンチマークを行う仮想クラスタ環境の構築が必要となった.

+
+
+ +
+
+ +
+

スケーラビリティ検証環境の構築

+ +

仮想化を用いたクラスタ環境の構築の際には,一つの仮想マシンが物理マシンのリソースを占有してしまうと,同一の物理マシンで動作している仮想マシンの動作に影響が出てくると考えられる.

+

そのため,仮想マシンのリソースを制限して他の仮想マシンに影響が出ないようにする必要がある.

+

以上の点を考慮しつつ以下の環境を用いてサーバー用・クライアント用の2つ仮想クラスタ環境の構築を行った.

+
+
+ +
+

スケーラビリティ検証環境の構築

+

クライアント用クラスタ

+
+
    +
  • 物理マシン
  • +
      +
    • CPU: Xeon X5660 2.67GHz(6/HT)
      ※CPUを2個搭載
    • +
    • メモリ: 130GB
    • +
    • ハイパーバイザ: WMWare vShpare4
    • +
    • 仮想マシン数: 6台
    • +
    +
+
+
+
    +
  • 仮想マシン
  • +
      +
    • CPU: 仮想CPU 4Core
    • +
    • メモリ: 8GB
    • +
    • OS: CentOS5.5
    • +
    +
+
+
+ +

クライアント用クラスタでは物理サーバーが8台用意されており合計48台のVMを利用することが出来る.

+
+
+ +
+

スケーラビリティ検証環境の構築

+

サーバー用クラスタ

+
+
    +
  • 物理マシン
  • +
      +
    • CPU: Xeon X5660 2.67GHz(6/HT)
      ※CPUを2個搭載
    • +
    • メモリ: 130GB
    • +
    • ハイパーバイザ: KVM
    • +
    • 仮想マシン数: 任意
    • +
    +
+
+
+
    +
  • 仮想マシン
  • +
      +
    • CPU: 仮想CPU 4-8Core
    • +
    • メモリ: 8GB
    • +
    • OS: Fedora 14
    • +
    +
+
+
+ +

サーバー用クラスタはサーバーの性能を変化させて検証を行うため,決まったリソースを割り振ったVMを用意していない.

+
+
+ +
+

スケーラビリティ検証環境管理ツールの開発

+

以上で仮想クラスタ環境を構築することができたが,クラスタの整備は単純作業の繰り返しで,管理ソフトを起動しての作業は効率が悪い.

+

仮想マシンは仮想環境が提供するAPIなどを用いて設定をプログラミングすることができる.

+

本研究では,設定を簡略化するためlibvirtを用いて仮想化クラスタの管理ツールの開発を行った.

+
+ +
+

libvirt

+

libvirtとは,様々な仮想環境を操作するための共通なAPIを提供するライブラリである.

+

仮想・物理マシン両方の情報や設定を共通のAPIを用いて操作することが出来る.

+ +

今回の検証環境ではKVMとVMWareの2つの仮想環境を利用しているため,共通の操作を提供するlibvirtを採用した.

+
+ +
+

php-webvirt

+ +

libvirtを用いた管理ツールはいくつか存在するが,どれもインストールが大変であったり,不要な機能があったりする.

+

そこで,本研究ではインストールが容易で簡易な仮想化管理環境であるphp-webvirtの開発を行った.

+

php-webvirtはCakePHPとlibvirtで作成されており,主に以下の機能を提供する.

+
    +
  • 仮想マシンの起動・終了
  • +
  • 仮想マシンの作成・破棄
  • +
  • ストレージプールの管理
  • +
  • VNCを用いた画面の表示
  • +
+
+
+ +
+

php-webvirt

+

ここにphp-webvirtの動作画面(1)を載せる予定

+
+ +
+

php-webvirt

+

ここにphp-webvirtの動作画面(2)を載せる予定

+
+ +
+

まとめ

+ +
    +
  • 本研究では,スケーラビリティの検証環境を仮想環境を用いて行った.
  • +
  • 仮想環境においては複数の仮想マシンが物理マシンで動作するため,リソースの制限が重要だと考えられる.
  • +
  • また,クラスタの整備は単純作業の繰り返しでありハイパーバイザが提供するライブラリを用いて自動化することが出来る.
  • +
  • そのため,複数のハイパーバイザで共通の操作を行えるlibvirtを用いた管理ツールを開発した.
  • +
+
+
+ +
+

全体のまとめ

+

書いたほうがいいかなー?

+
+ + + + + diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/audio_support/license.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/audio_support/license.txt Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,29 @@ +Software License Agreement (BSD License) + +Copyright (c) 2007, Scott Schiller (schillmania.com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +* Neither the name of schillmania.com nor the names of its contributors may be + used to endorse or promote products derived from this software without + specific prior written permission from schillmania.com. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/audio_support/null.mp3 Binary file jssst2011/ui/audio_support/null.mp3 has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/audio_support/soundmanager2.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/audio_support/soundmanager2.js Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,658 @@ +/* + SoundManager 2: Javascript Sound for the Web. + -------------------------------------------------- + http://www.schillmania.com/projects/soundmanager2/ + + Copyright (c) 2007, Scott Schiller. All rights reserved. + Code licensed under the BSD License: + http://www.schillmania.com/projects/soundmanager2/license.txt + + Beta V2.0b.20070118 +*/ + +function SoundManager(smURL,smID) { + var self = this; + this.enabled = false; + this.o = null; + this.url = (smURL||'ui/audio_support/soundmanager2.swf'); + this.id = (smID||'sm2movie'); + this.oMC = null; + this.sounds = []; + this.soundIDs = []; + this.allowPolling = true; // allow flash to poll for status update (required for "while playing", "progress" etc. to work.) + this.isIE = (navigator.userAgent.match(/MSIE/)); + this.isSafari = (navigator.userAgent.match(/safari/i)); + this._didAppend = false; + this._didInit = false; + this._disabled = false; + this.version = 'V2.0b.20070118'; + + this.defaultOptions = { + // ----------------- + 'debugMode': false, // enable debug/status messaging, handy for development/troubleshooting - will be written to a DIV with an ID of "soundmanager-debug", you can use CSS to make it pretty + 'autoLoad': false, // enable automatic loading (otherwise .load() will be called on demand with .play(), the latter being nicer on bandwidth - if you want to .load yourself, you also can) + 'stream': true, // allows playing before entire file has loaded (recommended) + 'autoPlay': false, // enable playing of file as soon as possible (much faster if "stream" is true) + 'onid3': null, // callback function for "ID3 data is added/available" + 'onload': null, // callback function for "load finished" + 'whileloading': null, // callback function for "download progress update" (X of Y bytes received) + 'onplay': null, // callback for "play" start + 'whileplaying': null, // callback during play (position update) + 'onstop': null, // callback for "user stop" + 'onfinish': null, // callback function for "sound finished playing" + 'onbeforefinish': null, // callback for "before sound finished playing (at [time])" + 'onbeforefinishtime': 2000, // offset (milliseconds) before end of sound to trigger beforefinish (eg. 1000 msec = 1 second) + 'onbeforefinishcomplete':null, // function to call when said sound finishes playing + 'onjustbeforefinish':null, // callback for [n] msec before end of current sound + 'onjustbeforefinishtime':200, // [n] - if not using, set to 0 (or null handler) and event will not fire. + 'multiShot': true, // let sounds "restart" or layer on top of each other when played multiple times, rather than one-shot/one at a time + 'pan': 0, // "pan" settings, left-to-right, -100 to 100 + 'volume': 100, // self-explanatory. 0-100, the latter being the max. + // ----------------- + 'foo': 'bar' // you don't need to change this one - it's actually an intentional filler. + } + + // --- public methods --- + + this.getMovie = function(smID) { + // return self.isIE?window[smID]:document[smID]; + return self.isIE?window[smID]:(self.isSafari?document[smID+'-embed']:document.getElementById(smID+'-embed')); + } + + this.loadFromXML = function(sXmlUrl) { + try { + self.o._loadFromXML(sXmlUrl); + } catch(e) { + self._failSafely(); + return true; + } + } + + this.createSound = function(oOptions) { + if (!self._didInit) throw new Error('soundManager.createSound(): Not loaded yet - wait for soundManager.onload() before calling sound-related methods'); + if (arguments.length==2) { + // function overloading in JS! :) ..assume simple createSound(id,url) use case + oOptions = {'id':arguments[0],'url':arguments[1]} + } + var thisOptions = self._mergeObjects(oOptions); + self._writeDebug('soundManager.createSound(): "'+thisOptions.id+'" ('+thisOptions.url+')'); + if (self._idCheck(thisOptions.id,true)) { + self._writeDebug('sound '+thisOptions.id+' already defined - exiting'); + return false; + } + self.sounds[thisOptions.id] = new SMSound(self,thisOptions); + self.soundIDs[self.soundIDs.length] = thisOptions.id; + try { + self.o._createSound(thisOptions.id,thisOptions.onjustbeforefinishtime); + } catch(e) { + self._failSafely(); + return true; + } + if (thisOptions.autoLoad || thisOptions.autoPlay) self.sounds[thisOptions.id].load(thisOptions); + if (thisOptions.autoPlay) self.sounds[thisOptions.id].playState = 1; // we can only assume this sound will be playing soon. + } + + this.load = function(sID,oOptions) { + if (!self._idCheck(sID)) return false; + self.sounds[sID].load(oOptions); + } + + this.unload = function(sID) { + if (!self._idCheck(sID)) return false; + self.sounds[sID].unload(); + } + + this.play = function(sID,oOptions) { + if (!self._idCheck(sID)) { + if (typeof oOptions != 'Object') oOptions = {url:oOptions}; // overloading use case: play('mySound','/path/to/some.mp3'); + if (oOptions && oOptions.url) { + // overloading use case, creation + playing of sound: .play('someID',{url:'/path/to.mp3'}); + self._writeDebug('soundController.play(): attempting to create "'+sID+'"'); + oOptions.id = sID; + self.createSound(oOptions); + } else { + return false; + } + } + self.sounds[sID].play(oOptions); + } + + this.start = this.play; // just for convenience + + this.setPosition = function(sID,nMsecOffset) { + if (!self._idCheck(sID)) return false; + self.sounds[sID].setPosition(nMsecOffset); + } + + this.stop = function(sID) { + if (!self._idCheck(sID)) return false; + self._writeDebug('soundManager.stop('+sID+')'); + self.sounds[sID].stop(); + } + + this.stopAll = function() { + for (var oSound in self.sounds) { + if (oSound instanceof SMSound) oSound.stop(); // apply only to sound objects + } + } + + this.pause = function(sID) { + if (!self._idCheck(sID)) return false; + self.sounds[sID].pause(); + } + + this.resume = function(sID) { + if (!self._idCheck(sID)) return false; + self.sounds[sID].resume(); + } + + this.togglePause = function(sID) { + if (!self._idCheck(sID)) return false; + self.sounds[sID].togglePause(); + } + + this.setPan = function(sID,nPan) { + if (!self._idCheck(sID)) return false; + self.sounds[sID].setPan(nPan); + } + + this.setVolume = function(sID,nVol) { + if (!self._idCheck(sID)) return false; + self.sounds[sID].setVolume(nVol); + } + + this.setPolling = function(bPolling) { + if (!self.o || !self.allowPolling) return false; + self._writeDebug('soundManager.setPolling('+bPolling+')'); + self.o._setPolling(bPolling); + } + + this.disable = function() { + // destroy all functions + if (self._disabled) return false; + self._disabled = true; + self._writeDebug('soundManager.disable(): Disabling all functions - future calls will return false.'); + for (var i=self.soundIDs.length; i--;) { + self._disableObject(self.sounds[self.soundIDs[i]]); + } + self.initComplete(); // fire "complete", despite fail + self._disableObject(self); + } + + this.getSoundById = function(sID,suppressDebug) { + if (!sID) throw new Error('SoundManager.getSoundById(): sID is null/undefined'); + var result = self.sounds[sID]; + if (!result && !suppressDebug) { + self._writeDebug('"'+sID+'" is an invalid sound ID.'); + // soundManager._writeDebug('trace: '+arguments.callee.caller); + } + return result; + } + + this.onload = function() { + onloadSM2(); + // window.onload() equivalent for SM2, ready to create sounds etc. + // this is a stub - you can override this in your own external script, eg. soundManager.onload = function() {} + // soundManager._writeDebug('Warning: soundManager.onload() is undefined.'); + } + + this.onerror = function() { + onerrorSM2(); + // stub for user handler, called when SM2 fails to load/init + } + + // --- "private" methods --- + + this._idCheck = this.getSoundById; + + this._disableObject = function(o) { + for (var oProp in o) { + if (typeof o[oProp] == 'function') o[oProp] = function(){return false;} + } + oProp = null; + } + + this._failSafely = function() { + // exception handler for "object doesn't support this property or method" + var flashCPLink = 'http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html'; + var fpgssTitle = 'You may need to whitelist this location/domain eg. file://C:/ or C:/ or mysite.com, or set ALWAYS ALLOW under the Flash Player Global Security Settings page. Note that this seems to apply only to file system viewing.'; + var flashCPL = 'view/edit'; + var FPGSS = 'FPGSS'; + if (!self._disabled) { + self._writeDebug('soundManager: JS->Flash communication failed. Possible causes: flash/browser security restrictions ('+flashCPL+'), insufficient browser/plugin support, or .swf not found'); + self._writeDebug('Verify that the movie path of '+self.url+' is correct (test link)'); + if (self._didAppend) { + if (!document.domain) { + self._writeDebug('Loading from local file system? (document.domain appears to be null, this location may need whitelisting by '+FPGSS+')'); + self._writeDebug('Possible security/domain restrictions ('+flashCPL+'), should work when served by http on same domain'); + } + // self._writeDebug('Note: Movie added via JS method, static object/embed in-page markup method may work instead.'); + } + self.disable(); + } + } + + this._createMovie = function(smID,smURL) { + var useDOM = !self.isIE; // IE needs document.write() to work, long story short - lame + if (window.location.href.indexOf('debug=1')+1) self.defaultOptions.debugMode = true; // allow force of debug mode via URL + var html = ['','']; + var debugID = 'soundmanager-debug'; + var debugHTML = '
'; + if (useDOM) { + self.oMC = document.createElement('div'); + self.oMC.className = 'movieContainer'; + // "hide" flash movie + self.oMC.style.position = 'absolute'; + self.oMC.style.left = '-256px'; + self.oMC.style.width = '1px'; + self.oMC.style.height = '1px'; + self.oMC.innerHTML = html[self.isIE?0:1]; + var oTarget = (!self.isIE && document.body?document.body:document.getElementsByTagName('div')[0]); + oTarget.appendChild(self.oMC); // append to body here can throw "operation aborted" under IE + if (!document.getElementById(debugID)) { + var oDebug = document.createElement('div'); + oDebug.id = debugID; + oDebug.style.display = (self.defaultOptions.debugMode?'block':'none'); + oTarget.appendChild(oDebug); + } + oTarget = null; + } else { + // IE method - local file system, may cause strange JS error at line 53? + // I hate this method, but it appears to be the only one that will work (createElement works, but JS->Flash communication oddly fails when viewing locally.) + // Finally, IE doesn't do application/xhtml+xml yet (thus document.write() is still minimally acceptable here.) + if (document.getElementById(debugID)) debugHTML = ''; // avoid overwriting + document.write('
'+html[self.isIE?0:1]+'
'+debugHTML); + } + self._didAppend = true; + self._writeDebug('-- SoundManager 2 Version '+self.version.substr(1)+' --'); + self._writeDebug('soundManager._createMovie(): trying to load '+smURL+''); + } + + this._writeDebug = function(sText) { + if (!self.defaultOptions.debugMode) return false; + var sDID = 'soundmanager-debug'; + try { + var o = document.getElementById(sDID); + if (!o) { + // attempt to create soundManager debug element + var oNew = document.createElement('div'); + oNew.id = sDID; + // o = document.body.appendChild(oNew); + o = null; + if (!o) return false; + } + var p = document.createElement('div'); + p.innerHTML = sText; + // o.appendChild(p); // top-to-bottom + o.insertBefore(p,o.firstChild); // bottom-to-top + } catch(e) { + // oh well + } + o = null; + } + + this._debug = function() { + self._writeDebug('soundManager._debug(): sounds by id/url:'); + for (var i=0,j=self.soundIDs.length; iFlash/ExternalInterface communication fails under non-IE (?!) + } + + this.destruct = function() { + if (self.isSafari) { + /* -- + Safari 1.3.2 (v312.6)/OSX 10.3.9 and perhaps newer will crash if a sound is actively loading when user exits/refreshes/leaves page + (Apparently related to ExternalInterface making calls to an unloading/unloaded page?) + Unloading sounds (detaching handlers and so on) may help to prevent this + -- */ + for (var i=self.soundIDs.length; i--;) { + if (self.sounds[self.soundIDs[i]].readyState == 1) self.sounds[self.soundIDs[i]].unload(); + } + } + self.disable(); + // self.o = null; + // self.oMC = null; + } + +} + +function SMSound(oSM,oOptions) { + var self = this; + var sm = oSM; + this.sID = oOptions.id; + this.url = oOptions.url; + this.options = sm._mergeObjects(oOptions); + this.id3 = { + /* + Name/value pairs set via Flash when available - see reference for names: + http://livedocs.macromedia.com/flash/8/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001567.html + (eg., this.id3.songname or this.id3['songname']) + */ + } + + self.resetProperties = function(bLoaded) { + self.bytesLoaded = null; + self.bytesTotal = null; + self.position = null; + self.duration = null; + self.durationEstimate = null; + self.loaded = false; + self.loadSuccess = null; + self.playState = 0; + self.paused = false; + self.readyState = 0; // 0 = uninitialised, 1 = loading, 2 = failed/error, 3 = loaded/success + self.didBeforeFinish = false; + self.didJustBeforeFinish = false; + } + + self.resetProperties(); + + // --- public methods --- + + this.load = function(oOptions) { + self.loaded = false; + self.loadSuccess = null; + self.readyState = 1; + self.playState = (oOptions.autoPlay||false); // if autoPlay, assume "playing" is true (no way to detect when it actually starts in Flash unless onPlay is watched?) + var thisOptions = sm._mergeObjects(oOptions); + if (typeof thisOptions.url == 'undefined') thisOptions.url = self.url; + try { + sm._writeDebug('loading '+thisOptions.url); + sm.o._load(self.sID,thisOptions.url,thisOptions.stream,thisOptions.autoPlay,thisOptions.whileloading?1:0); + } catch(e) { + sm._writeDebug('SMSound().load(): JS->Flash communication failed.'); + } + } + + this.unload = function() { + // Flash 8/AS2 can't "close" a stream - fake it by loading an empty MP3 + sm._writeDebug('SMSound().unload()'); + self.setPosition(0); // reset current sound positioning + sm.o._unload(self.sID,'ui/audio_support/null.mp3'); + // reset load/status flags + self.resetProperties(); + } + + this.play = function(oOptions) { + if (!oOptions) oOptions = {}; + + // --- TODO: make event handlers specified via oOptions only apply to this instance of play() (eg. onfinish applies but will reset to default on finish) + if (oOptions.onfinish) self.options.onfinish = oOptions.onfinish; + if (oOptions.onbeforefinish) self.options.onbeforefinish = oOptions.onbeforefinish; + if (oOptions.onjustbeforefinish) self.options.onjustbeforefinish = oOptions.onjustbeforefinish; + // --- + + var thisOptions = sm._mergeObjects(oOptions); + if (self.playState == 1) { + // var allowMulti = typeof oOptions.multiShot!='undefined'?oOptions.multiShot:sm.defaultOptions.multiShot; + var allowMulti = thisOptions.multiShot; + if (!allowMulti) { + sm._writeDebug('SMSound.play(): "'+self.sID+'" already playing? (one-shot)'); + return false; + } else { + sm._writeDebug('SMSound.play(): "'+self.sID+'" already playing (multi-shot)'); + } + } + if (!self.loaded) { + if (self.readyState == 0) { + sm._writeDebug('SMSound.play(): .play() before load request. Attempting to load "'+self.sID+'"'); + // try to get this sound playing ASAP + thisOptions.stream = true; + thisOptions.autoPlay = true; + // TODO: need to investigate when false, double-playing + // if (typeof oOptions.autoPlay=='undefined') thisOptions.autoPlay = true; // only set autoPlay if unspecified here + self.load(thisOptions); // try to get this sound playing ASAP + } else if (self.readyState == 2) { + sm._writeDebug('SMSound.play(): Could not load "'+self.sID+'" - exiting'); + return false; + } else { + sm._writeDebug('SMSound.play(): "'+self.sID+'" is loading - attempting to play..'); + } + } else { + sm._writeDebug('SMSound.play(): "'+self.sID+'"'); + } + if (self.paused) { + self.resume(); + } else { + self.playState = 1; + self.position = (thisOptions.offset||0); + if (thisOptions.onplay) thisOptions.onplay.apply(self); + self.setVolume(thisOptions.volume); + self.setPan(thisOptions.pan); + if (!thisOptions.autoPlay) { + sm._writeDebug('starting sound '+self.sID); + sm.o._start(self.sID,thisOptions.loop||1,self.position); // TODO: verify !autoPlay doesn't cause issue + } + } + } + + this.start = this.play; // just for convenience + + this.stop = function(bAll) { + if (self.playState == 1) { + self.playState = 0; + self.paused = false; + if (sm.defaultOptions.onstop) sm.defaultOptions.onstop.apply(self); + sm.o._stop(self.sID); + } + } + + this.setPosition = function(nMsecOffset) { + // sm._writeDebug('setPosition('+nMsecOffset+')'); + sm.o._setPosition(self.sID,nMsecOffset/1000,self.paused||!self.playState); // if paused or not playing, will not resume (by playing) + } + + this.pause = function() { + if (self.paused) return false; + sm._writeDebug('SMSound.pause()'); + self.paused = true; + sm.o._pause(self.sID); + } + + this.resume = function() { + if (!self.paused) return false; + sm._writeDebug('SMSound.resume()'); + self.paused = false; + sm.o._pause(self.sID); // flash method is toggle-based (pause/resume) + } + + this.togglePause = function() { + // if playing, pauses - if paused, resumes playing. + sm._writeDebug('SMSound.togglePause()'); + if (!self.playState) { + // self.setPosition(); + self.play({offset:self.position/1000}); + return false; + } + if (self.paused) { + sm._writeDebug('SMSound.togglePause(): resuming..'); + self.resume(); + } else { + sm._writeDebug('SMSound.togglePause(): pausing..'); + self.pause(); + } + } + + this.setPan = function(nPan) { + if (typeof nPan == 'undefined') nPan = 0; + sm.o._setPan(self.sID,nPan); + self.options.pan = nPan; + } + + this.setVolume = function(nVol) { + if (typeof nVol == 'undefined') nVol = 100; + sm.o._setVolume(self.sID,nVol); + self.options.volume = nVol; + } + + // --- "private" methods called by Flash --- + + this._whileloading = function(nBytesLoaded,nBytesTotal,nDuration) { + self.bytesLoaded = nBytesLoaded; + self.bytesTotal = nBytesTotal; + self.duration = nDuration; + self.durationEstimate = parseInt((self.bytesTotal/self.bytesLoaded)*self.duration); // estimate total time (will only be accurate with CBR MP3s.) + if (self.readyState != 3 && self.options.whileloading) self.options.whileloading.apply(self); + // soundManager._writeDebug('duration/durationEst: '+self.duration+' / '+self.durationEstimate); + } + + this._onid3 = function(oID3PropNames,oID3Data) { + // oID3PropNames: string array (names) + // ID3Data: string array (data) + sm._writeDebug('SMSound()._onid3(): "'+this.sID+'" ID3 data received.'); + var oData = []; + for (var i=0,j=oID3PropNames.length; itest URL]')); + self.loaded = bSuccess; + self.loadSuccess = bSuccess; + self.readyState = bSuccess?3:2; + if (self.options.onload) self.options.onload.apply(self); + } + + this._onbeforefinish = function() { + if (!self.didBeforeFinish) { + self.didBeforeFinish = true; + if (self.options.onbeforefinish) self.options.onbeforefinish.apply(self); + } + } + + this._onjustbeforefinish = function(msOffset) { + // msOffset: "end of sound" delay actual value (eg. 200 msec, value at event fire time was 187) + if (!self.didJustBeforeFinish) { + self.didJustBeforeFinish = true; + soundManager._writeDebug('SMSound._onjustbeforefinish()'); + if (self.options.onjustbeforefinish) self.options.onjustbeforefinish.apply(self);; + } + } + + this._onfinish = function() { + // sound has finished playing + sm._writeDebug('SMSound._onfinish(): "'+self.sID+'" finished playing'); + self.playState = 0; + self.paused = false; + if (self.options.onfinish) self.options.onfinish.apply(self); + if (self.options.onbeforefinishcomplete) self.options.onbeforefinishcomplete.apply(self); + // reset some state items + self.setPosition(0); + self.didBeforeFinish = false; + self.didJustBeforeFinish = false; + } + +} + +var soundManager = new SoundManager(); + +// attach onload handler +if (window.addEventListener) { + window.addEventListener('load',soundManager.beginInit,false); + window.addEventListener('beforeunload',soundManager.destruct,false); +} else if (window.attachEvent) { + window.attachEvent('onload',soundManager.beginInit); + window.attachEvent('beforeunload',soundManager.destruct); +} else { + // no add/attachevent support - safe to assume no JS->Flash either. + soundManager.disable(); +} \ No newline at end of file diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/audio_support/soundmanager2.swf Binary file jssst2011/ui/audio_support/soundmanager2.swf has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/bodybg.gif Binary file jssst2011/ui/default_utf/bodybg.gif has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/framing.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/default_utf/framing.css Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,22 @@ +/* The following styles size, place, and layer the slide components. + Edit these if you want to change the overall slide layout. + The commented lines can be uncommented (and modified, if necessary) + to help you with the rearrangement process. */ + +/* target = 1024x768 */ + +div#header, div#footer, .slide {width: 100%; top: 0; left: 0;} +div#header {top: 0; height: 3em; z-index: 1;} +div#footer {top: auto; bottom: 0; height: 0.5em; z-index: 5;} +.slide {top: 0; width: 92%; padding: 3.5em 4% 4%; z-index: 2; list-style: none;} +div#controls {left: 50%; bottom: 0; width: 50%; z-index: 100;} +div#controls form {text-align: right; width: 100%; margin: 0;} +#currentSlide {position: absolute; width: 12%; left: 44%; bottom: 1em; z-index: 10;} +html>body #currentSlide {position: fixed;} + +/* +div#header {background: #FCC;} +div#footer {background: #CCF;} +div#controls {background: #BBD;} +div#currentSlide {background: #FFC;} +*/ diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/opera.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/default_utf/opera.css Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,7 @@ +/* DO NOT CHANGE THESE unless you really want to break Opera Show */ +.slide { + visibility: visible !important; + position: static !important; + page-break-before: always; +} +#slide0 {page-break-before: avoid;} diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/outline.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/default_utf/outline.css Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,13 @@ +/* don't change this unless you want the layout stuff to show up in the outline view! */ + +.hide, .layout div, #footer *, #controlForm * {display: none;} +#footer, #controls, #controlForm, #navLinks, #sheet {display: block; visibility: visible; margin: 0; padding: 0;} +#sheet {float: right; padding: 0.5em;} +html>body #sheet {position: fixed; top: 0; right: 0;} + +/* making the outline look pretty-ish */ + +#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {border: none; margin: 0;} +#slide0 h1 {padding-top: 1.5em;} +.slide h1 {margin: 1.5em 0 0; padding-top: 0.25em; border-top: 1px solid #888; border-bottom: 1px solid #AAA;} +#sheet {border: 1px solid; border-width: 0 0 1px 1px; background: #FFF;} diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/pattern.png Binary file jssst2011/ui/default_utf/pattern.png has changed diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/pretty.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/default_utf/pretty.css Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,95 @@ +/* Following are the presentation styles -- edit away! */ + +body {background: #FFF url(bodybg.gif) -16px 0 no-repeat; color: #000; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 2.25em;} +a:link, a:visited {text-decoration: none; color: #00C;} + +h1, h2, h3, h4 {font-size: 100%; margin: 0; padding: 0; font-weight: inherit;} +h1 {text-shadow: 0.1em 0.1em 0.1em #666;} + +ul, pre {margin: 0; line-height: 1em;} +html, body {margin: 0; padding: 0;} + +blockquote, q {font-style: italic;} +blockquote {padding: 0 2em 0.5em; margin: 0 1.5em 0.5em; text-align: center; font-size: 1em;} +blockquote p {margin: 0;} +blockquote i {font-style: normal;} +blockquote b {display: block; margin-top: 0.5em; font-weight: normal; font-size: smaller; font-style: normal;} +blockquote b i {font-style: italic;} + +img {border: 0;} +kbd {font-weight: bold; font-size: 1em;} +sup {font-size: smaller; line-height: 1px;} + +.slide code {padding: 2px 0.25em; font-weight: bold; color: #c00;} +.slide code.bad, code del {color: red;} +.slide code.old {color: silver;} +.slide pre {padding: 0; margin: 0.25em 0 0.5em 0.5em; color: #533; font-size: 90%;} +.slide pre code {display: block;} +.slide ul {margin-left: 5%; margin-right: 7%; list-style: disc;} +.slide li {margin-top: 0.75em; margin-right: 0;} +.slide ul ul {line-height: 1;} +.slide ul ul li {margin: .2em; font-size: 85%; list-style: square;} +.slide img.leader {display: block; margin: 0 auto;} + +div#header, div#footer {background: #005; color: #AAB; font-family: Verdana, Arial, Helvetica, sans-serif;} +div#header {background: #005 url(bodybg.gif) -16px 0 no-repeat; line-height: 1px;} +div#footer {font-size: 0.5em; font-weight: bold; padding: 1em 0;} +#footer h1, #footer h2 {border: none; display: block; padding: 0; position:absolute; bottom:0.5em;} +#footer h1 {left:1em;} +#footer h2 {right:1em; font-style: italic;} + +div.long {font-size: 0.75em;} +.slide h1 {position: absolute; top: 0.7em; left: 87px; z-index: 1; margin: 0; padding: 0.3em 0 0 50px; white-space: nowrap; font: bold 150%/1em Arial, Helvetica, sans-serif; text-transform: capitalize; color: #DDE; background-color: transparent;} +.slide h3 {font-size: 130%;} +h1 abbr {font-variant: small-caps;} + +div#controls {position: absolute; left: 25%; bottom: 0; width: 50%; text-align: center; font: bold 1em Verdana, Arial, Helvetica, sans-serif;} +html>body div#controls {background: transparent; position: fixed; padding: 0; top: auto; text-align: center;} +#controls #sheet {display: none;} +#controls #controlForm {height: 3.0em; text-align: center; vertical-align: middle;} +#controls #navLinks {padding: 0 0 0.2em 0; margin: 0; background: url(pattern.png) gray bottom repeat-x; border: 2px outset gray; border-top-color: silver; border-left-color: silver; text-align: center; vertical-align: middle; white-space: nowrap;} +#controls #navLinks a {text-shadow: #444 0.1em 0.1em 0.1em; padding: 0; margin: 0em 0.36em; background: transparent; border: none; color: white; cursor: pointer;} +#controls #navLinks a:focus, #controls #navLinks a:hover {text-decoration: none; color: black !important;} +#controls #navLinks a:link, #controls #navLinks a:visited {text-decoration: none; color: white;} +#controls #navLinks .subLinks {display: inline; border: 1px inset gray; border-bottom-color: silver; border-right-color: silver; font-size: 75%; padding: 0 0.25em; margin: -0.2em 0 0 0; background-color: #666; text-align: center; vertical-align: middle; white-space: nowrap;} +#controls #navLinks .subLinks a {text-shadow: none; font-weight: normal; padding: 0; margin: 0; border: none; color: white; cursor: pointer;} + +#jumplist, #volumelist {padding: 0; margin: 0; width: 1.5em; height: 2.25em; cursor: pointer;} + +#currentSlide {white-space: nowrap; text-align: center; margin-bottom: -0.5em; font-size: 0.5em; background-color: transparent; color: #666;} + +#guru {position: absolute; visibility: visible; left: 0px; top: 0px; padding: 4px; width: 99%; height: auto; text-align: center; background-color: black; z-index: 10;} +#guru div {border: solid 3px red; padding: 4px; font-family: monospace; font-size: 60%; width: auto; height: auto; color: red; text-align: center;} + +#slide0 {padding-top: 3.5em; font-size: 90%;} +#slide0 h1 {position: static; margin: 1em 0 0; padding: 0; font: bold 2em Arial, Helvetica, sans-serif; white-space: normal; color: #000; background-color: transparent;} +#slide0 h2 {font: bold italic 1em Arial, Helvetica, sans-serif; margin: 0.25em;} +#slide0 h3 {margin-top: 1.5em; font-size: 1.5em;} +#slide0 h4 {margin-top: 0; font-size: 1em;} + +ul.urls {list-style: none; display: inline; margin: 0;} +.urls li {display: inline; margin: 0;} +.note {display: none;} +.external {border-bottom: 1px dotted gray;} +html>body .external {border-bottom: none;} +.external:after {content: " \274F"; font-size: smaller; color: #77B;} + +.incremental, .incremental *, .incremental *:after {color: #DDE; visibility: visible;} +img.incremental, canvas.incremental {visibility: hidden;} +.slide .current {color: #B02;} + +/* diagnostics +li:after {content: " [" attr(class) "]"; color: #F88;} +*/ + +table.piechart, table.barchart, table.linechart { border-spacing: 0.3em 0.15em; } +table.piechart tr th, table.barchart tr th, table.linechart tr th { white-space: nowrap; } +table.piechart tr td, table.barchart tr td, table.linechart tr td { vertical-align: top; white-space: nowrap; } +table.piechart tr td.col, table.barchart tr td.col, table.linechart tr td.col { border-bottom: 1px solid #555; border-right: 1px solid #555; } +table.fs90 tr td, table.fs90 tr th, div.fs90, pre.fs90, p.fs90 ,ul.fs90 {font-size: 0.9em; } +table.fs75 tr td, table.fs75 tr th, div.fs75, pre.fs75, p.fs75 ,ul.fs75 {font-size: 0.75em; } +table.fs66 tr td, table.fs66 tr th, div.fs66, pre.fs66, p.fs66 ,ul.fs66 {font-size: 0.66em; } +table.fs50 tr td, table.fs50 tr th, div.fs50, pre.fs50, p.fs50 ,ul.fs50 {font-size: 0.5em; } + +#soundmanager-debug {position:fixed; top:0px; right:0px; width:30em; height:20em; overflow:auto; border:1px solid red; padding:1em; margin:2em; font-family:"sans serif"; font-size: 12px;color: black; background-color:#f6f6f6; z-index: 100;} +#soundmanager-debug code {font-size: 11px;} \ No newline at end of file diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/print.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/default_utf/print.css Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,3 @@ +/* The following rule is necessary to have all slides appear in print! DO NOT REMOVE IT! */ .slide, ul, p {page-break-inside: avoid; visibility: visible !important;} h1 {page-break-after: avoid;} +img {page-break-inside: avoid; page-break-after: avoid;} +/*.slide {page-break-after: always;}*/ body {font-size: 12pt; background: white;} * {color: black;} #slide0 h1 {font-size: 200%; border: none; margin: 0.5em 0 0.25em;} #slide0 h3 {margin: 0; padding: 0;} #slide0 h4 {margin: 0 0 0.5em; padding: 0;} #slide0 {margin-bottom: 3em;} h1 {border-top: 2pt solid gray; border-bottom: 1px dotted silver;} .extra {background: transparent !important;} div.extra, pre.extra, .example {font-size: 10pt; color: #333;} ul.extra a {font-weight: bold;} p.example {display: none;} #header {display: none;} #footer h1 {margin: 0; border-bottom: 1px solid; color: gray; font-style: italic;} #footer h2, #controls {display: none;} /* The following rule keeps the layout stuff out of print. Remove at your own risk! */ .hide, .layout, .layout * {display: none !important;} \ No newline at end of file diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/s5-core.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/default_utf/s5-core.css Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,8 @@ +/* Do not edit or override these styles! The system will likely break if you do. */ + +div#header, div#footer, div#controls, .slide {position: absolute;} +html>body div#header, html>body div#footer, html>body div#controls, html>body .slide {position: fixed;} +.handout, .notes, .hide {display: none;} +.layout {display: block;} +.slide, .hideme, .incremental {visibility: hidden;} +#slide0 {visibility: visible;} diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/slides.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/default_utf/slides.css Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,3 @@ +@import url(s5-core.css); /* required to make the slide show run at all */ +@import url(framing.css); /* sets basic placement and size of slide components */ +@import url(pretty.css); /* stuff that makes the slides look better than blah */ \ No newline at end of file diff -r bd7d39a4e57f -r f542388881a9 jssst2011/ui/default_utf/slides.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jssst2011/ui/default_utf/slides.js Sun Sep 25 03:42:16 2011 +0900 @@ -0,0 +1,2665 @@ +// S5 1.3beta7 (18-Apr-2007) advanced version by C. Effenberger +// Please see http://s5.netzgesta.de/ for more information +// based on S5 v1.2a1 slides.js -- released into the Public Domain +// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information +// about all the wonderful and talented contributors to this code! +// audio extension: soundmanager2 is NOT Public Domain +// Please see http://www.schillmania.com/projects/soundmanager2/ for information + +var undef; +var slideCSS = ''; +var snum = 0; +var smax = 1; +var incpos = 0; +var number = undef; +var firstTime = 1; +var s5mode = true; +var helpmode = false; +var defaultView = 'slideshow'; //outline +var controlVis = 'visible'; + +// scalable images extension +var empx = 0; +var images = new Array(); +var canvas = new Array(); +var medias = new Array(); +var piecharts = new Array(); +var barcharts = new Array(); +var linecharts = new Array(); +// scalable images extension + +// transition extension +var tranSitions = false; +var fadeModus = false; +var fadeDuration = 500; +var incrDuration = 250; +var opac = 1; +var cid = ''; +var nid = ''; +var tid = ''; +var jl = ''; +// transition extension + +// autoplay extension +var autoMatic = false; +var playLoop = false; +var playPause = false; +var autoRun = false; +var playDelay = 5000; +var remainDer = 0; +var incrDelay = 0; +// autoplay extension + +// audio extension +var sound = new Array(); +var audioSupport = false; +var audioVolume = 100; +var audioError = false; +var swfUnloaded = true; +var bgSoundItem = 9999; +var curSoundID = -1; +// audio extension + +// panel extension +var highLight = "rgb(255, 204, 0)"; +// panel extension + +// canvas chart extension +var canvasSupport = false; +var ChartData = new Array(); +var colorSlice = new Array(); +var font = document.createElement("img"); +font.setAttribute("src", "ui/graphic_support/numeric.png"); +signs = { + '0': {sx: 0, sy: 0, sw: 48, sh: 64}, + '1': {sx: 48, sy: 0, sw: 48, sh: 64}, + '2': {sx: 96, sy: 0, sw: 48, sh: 64}, + '3': {sx: 144, sy: 0, sw: 48, sh: 64}, + '4': {sx: 192, sy: 0, sw: 48, sh: 64}, + '5': {sx: 240, sy: 0, sw: 48, sh: 64}, + '6': {sx: 288, sy: 0, sw: 48, sh: 64}, + '7': {sx: 336, sy: 0, sw: 48, sh: 64}, + '8': {sx: 384, sy: 0, sw: 48, sh: 64}, + '9': {sx: 432, sy: 0, sw: 48, sh: 64}, + '%': {sx: 480, sy: 0, sw: 48, sh: 64}, + '.': {sx: 528, sy: 0, sw: 24, sh: 64} +}; +var colorNames= new Array(); +colorNames["black"]="#000000"; colorNames["maroon"]="#800000"; colorNames["green"]="#008000"; colorNames["olive"]="#808000"; colorNames["navy"]="#000080"; colorNames["purple"]="#800080"; colorNames["teal"]="#008080"; colorNames["gray"]="#808080"; colorNames["silver"]="#C0C0C0"; colorNames["red"]="#FF0000"; colorNames["lime"]="#00FF00"; colorNames["yellow"]="#FFFF00"; colorNames["blue"]="#0000FF"; colorNames["fuchsia"]="#FF00FF"; colorNames["aqua"]="#00FFFF"; colorNames["white"]="#FFFFFF"; colorNames["aliceblue"]="#F0F8FF"; colorNames["antiquewhite"]="#FAEBD7"; colorNames["aquamarine"]="#7FFFD4"; colorNames["azure"]="#F0FFFF"; colorNames["beige"]="#F5F5DC"; colorNames["blueviolet"]="#8A2BE2"; colorNames["brown"]="#A52A2A"; colorNames["burlywood"]="#DEB887"; colorNames["cadetblue"]="#5F9EA0"; colorNames["chartreuse"]="#7FFF00"; colorNames["chocolate"]="#D2691E"; colorNames["coral"]="#FF7F50"; colorNames["cornflowerblue"]="#6495ED"; colorNames["cornsilk"]="#FFF8DC"; colorNames["crimson"]="#DC143C"; colorNames["darkblue"]="#00008B"; colorNames["darkcyan"]="#008B8B"; colorNames["darkgoldenrod"]="#B8860B"; colorNames["darkgray"]="#A9A9A9"; colorNames["darkgreen"]="#006400"; colorNames["darkkhaki"]="#BDB76B"; colorNames["darkmagenta"]="#8B008B"; colorNames["darkolivegreen"]="#556B2F"; colorNames["darkorange"]="#FF8C00"; colorNames["darkorchid"]="#9932CC"; colorNames["darkred"]="#8B0000"; colorNames["darksalmon"]="#E9967A"; colorNames["darkseagreen"]="#8FBC8F"; colorNames["darkslateblue"]="#483D8B"; colorNames["darkslategray"]="#2F4F4F"; colorNames["darkturquoise"]="#00CED1"; colorNames["darkviolet"]="#9400D3"; colorNames["deeppink"]="#FF1493"; colorNames["deepskyblue"]="#00BFFF"; colorNames["dimgray"]="#696969"; colorNames["dodgerblue"]="#1E90FF"; colorNames["firebrick"]="#B22222"; colorNames["floralwhite"]="#FFFAF0"; colorNames["forestgreen"]="#228B22"; colorNames["gainsboro"]="#DCDCDC"; colorNames["ghostwhite"]="#F8F8FF"; colorNames["gold"]="#FFD700"; colorNames["goldenrod"]="#DAA520"; colorNames["greenyellow"]="#ADFF2F"; colorNames["honeydew"]="#F0FFF0"; colorNames["hotpink"]="#FF69B4"; colorNames["indianred"]="#CD5C5C"; colorNames["indigo"]="#4B0082"; colorNames["ivory"]="#FFFFF0"; colorNames["khaki"]="#F0E68C"; colorNames["lavender"]="#E6E6FA"; colorNames["lavenderblush"]="#FFF0F5"; colorNames["lawngreen"]="#7CFC00"; colorNames["lemonchiffon"]="#FFFACD"; colorNames["lightblue"]="#ADD8E6"; colorNames["lightcoral"]="#F08080"; colorNames["lightcyan"]="#E0FFFF"; colorNames["lightgoldenrodyellow"]="#FAFAD2"; colorNames["lightgreen"]="#90EE90"; colorNames["lightgrey"]="#D3D3D3"; colorNames["lightpink"]="#FFB6C1"; colorNames["lightsalmon"]="#FFA07A"; colorNames["lightseagreen"]="#20B2AA"; colorNames["lightskyblue"]="#87CEFA"; colorNames["lightslategray"]="#778899"; colorNames["lightsteelblue"]="#B0C4DE"; colorNames["lightyellow"]="#FFFFE0"; colorNames["limegreen"]="#32CD32"; colorNames["linen"]="#FAF0E6"; colorNames["mediumaquamarine"]="#66CDAA"; colorNames["mediumblue"]="#0000CD"; colorNames["mediumorchid"]="#BA55D3"; colorNames["ediumpurple"]="#9370D"; colorNames["mediumseagreen"]="#3CB371"; colorNames["mediumslateblue"]="#7B68EE"; colorNames["mediumspringgreen"]="#00FA9A"; colorNames["mediumturquoise"]="#48D1CC"; colorNames["mediumvioletred"]="#C71585"; colorNames["midnightblue"]="#191970"; colorNames["mintcream"]="#F5FFFA"; colorNames["mistyrose"]="#FFE4E1"; colorNames["moccasin"]="#FFE4B5"; colorNames["navajowhite"]="#FFDEAD"; colorNames["oldlace"]="#FDF5E6"; colorNames["olivedrab"]="#6B8E23"; colorNames["orange"]="#FFA500"; colorNames["orangered"]="#FF4500"; colorNames["orchid"]="#DA70D6"; colorNames["palegoldenrod"]="#EEE8AA"; colorNames["palegreen"]="#98FB98"; colorNames["paleturquoise"]="#AFEEEE"; colorNames["palevioletred"]="#DB7093"; colorNames["papayawhip"]="#FFEFD5"; colorNames["peachpuff"]="#FFDAB9"; colorNames["peru"]="#CD853F"; colorNames["pink"]="#FFC0CB"; colorNames["plum"]="#DDA0DD"; colorNames["powderblue"]="#B0E0E6"; colorNames["rosybrown"]="#BC8F8F"; colorNames["royalblue"]="#4169E1"; colorNames["saddlebrown"]="#8B4513"; colorNames["salmon"]="#FA8072"; colorNames["sandybrown"]="#F4A460"; colorNames["seagreen"]="#2E8B57"; colorNames["seashell"]="#FFF5EE"; colorNames["sienna"]="#A0522D"; colorNames["skyblue"]="#87CEEB"; colorNames["slateblue"]="#6A5ACD"; colorNames["slategray"]="#708090"; colorNames["snow"]="#FFFAFA"; colorNames["springgreen"]="#00FF7F"; colorNames["steelblue"]="#4682B4"; colorNames["tan"]="#D2B48C"; colorNames["thistle"]="#D8BFD8"; colorNames["tomato"]="#FF6347"; colorNames["turquoise"]="#40E0D0"; colorNames["violet"]="#EE82EE"; colorNames["wheat"]="#F5DEB3"; colorNames["whitesmoke"]="#F5F5F5"; colorNames["yellowgreen"]="#9ACD32"; +var canvas_bgcolor = ""; +var canvas_width = 200; +var canvas_height = 200; +var canvas_noshade = 0; +var canvas_nofill = 0; +var canvas_noshadow = 0; +var canvas_htmltext = 0; +var canvas_imgtext = 0; +var canvas_notext = 0; +// canvas chart extension + +var s5NotesWindow; +var s5NotesWindowLoaded = false; +var previousSlide = 0; +var presentationStart = new Date(); +var slideStart = new Date(); + +var countdown = { + timer: 0, + state: 'pause', + start: new Date(), + end: 0, + remaining: 0 +}; + +var isIE = navigator.appName == 'Microsoft Internet Explorer' && navigator.userAgent.indexOf('Opera') < 1 ? 1 : 0; +if(isIE) var notIE7 = parseInt(navigator.appVersion) < 7 ? 1 : 0; +var isOp = navigator.userAgent.indexOf('Opera') > -1 ? 1 : 0; +var isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0; +var isS2 = navigator.userAgent.indexOf('Safari') >= 2 ? 1 : 0; + +function hasClass(object, className) { + if (!object.className) return false; + return (object.className.search('(^|\\s)' + className + '(\\s|$)') != -1); +} + +function hasValue(object, value) { + if (!object) return false; + return (object.search('(^|\\s)' + value + '(\\s|$)') != -1); +} + +function removeClass(object,className) { + if (!object || !hasClass(object,className)) return; + object.className = object.className.replace(new RegExp('(^|\\s)'+className+'(\\s|$)'), RegExp.$1+RegExp.$2); +} + +function addClass(object,className) { + if (!object || hasClass(object, className)) return; + if (object.className) { + object.className += ' '+className; + } else { + object.className = className; + } +} + +function changeClass(object,className) { + if (!object) return; + object.firstChild.className = className; +} + +function GetElementsWithClassName(elementName,className) { + var allElements = document.getElementsByTagName(elementName); + var elemColl = new Array(); + for (var i = 0; i< allElements.length; i++) { + if (hasClass(allElements[i], className)) { + elemColl[elemColl.length] = allElements[i]; + } + } + return elemColl; +} + +function isParentOrSelf(element, id) { + if (element == null || element.nodeName=='BODY') return false; + else if (element.id == id) return true; + else return isParentOrSelf(element.parentNode, id); +} + +function nodeValue(node) { + var result = ""; + if (node.nodeType == 1) { + var children = node.childNodes; + for (var i = 0; i < children.length; ++i) { + result += nodeValue(children[i]); + } + } + else if (node.nodeType == 3) { + result = node.nodeValue; + } + return(result); +} + +function slideLabel() { + var slideColl = GetElementsWithClassName('*','slide'); + var list = document.getElementById('jumplist'); + smax = slideColl.length; + for (var n = 0; n < smax; n++) { + var obj = slideColl[n]; + var did = 'slide' + n.toString(); + obj.setAttribute('id',did); + var otext = ''; + var menu = obj.firstChild; + if (!menu) continue; // to cope with empty slides + while (menu && menu.nodeType == 3) { + menu = menu.nextSibling; + } + if (!menu) continue; // to cope with slides with only text nodes + var menunodes = menu.childNodes; + for (var o = 0; o < menunodes.length; o++) { + otext += nodeValue(menunodes[o]); + } + list.options[list.length] = new Option(n + ' : ' + otext, n); + } +} + +function currentSlide() { + var cs, at, fd, ss; + if (document.getElementById) { + cs = document.getElementById('currentSlide'); + } else { + cs = document.currentSlide; + } + fd = fadeModus?"F":"–"; + ss = audioSupport?"S":"–"; + at = (autoMatic?(playPause?"||":(playLoop?">0":">|")):"––"); + cs.innerHTML = '