Merge m-i to m-c.
authorKyle Huey <khuey@kylehuey.com>
Sat, 09 Jul 2011 20:19:36 -0700
changeset 73378 518a79e90444cce2919b4e13a559b45aef080360
parent 73365 d3537bbc4e6ae2b3fffe396a4779979179df0438 (current diff)
parent 73377 acc1dab8593ca54e674370e75a4b4cbcad475bfa (diff)
child 73379 18c8c2ea4caf07635792b70168fad1d8a6694a38
child 73393 cc0bc9946386b9bdf41f755fe877218db5ea136a
push id235
push userbzbarsky@mozilla.com
push dateTue, 27 Sep 2011 17:13:04 +0000
treeherdermozilla-beta@2d1e082d176a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone8.0a1
first release with
nightly linux32
518a79e90444 / 8.0a1 / 20110710030756 / files
nightly linux64
518a79e90444 / 8.0a1 / 20110710030756 / files
nightly mac
518a79e90444 / 8.0a1 / 20110710030756 / files
nightly win32
518a79e90444 / 8.0a1 / 20110710030756 / files
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
Merge m-i to m-c.
--- a/content/canvas/public/nsICanvasRenderingContextInternal.h
+++ b/content/canvas/public/nsICanvasRenderingContextInternal.h
@@ -117,16 +117,21 @@ public:
   NS_IMETHOD Reset() = 0;
 
   // Return the CanvasLayer for this context, creating
   // one for the given layer manager if not available.
   virtual already_AddRefed<CanvasLayer> GetCanvasLayer(nsDisplayListBuilder* aBuilder,
                                                        CanvasLayer *aOldLayer,
                                                        LayerManager *aManager) = 0;
 
+  // Return true if the canvas should be forced to be "inactive" to ensure
+  // it can be drawn to the screen even if it's too large to be blitted by
+  // an accelerated CanvasLayer.
+  virtual PRBool ShouldForceInactiveLayer(LayerManager *aManager) { return PR_FALSE; }
+
   virtual void MarkContextClean() = 0;
 
   // Redraw the dirty rectangle of this canvas.
   NS_IMETHOD Redraw(const gfxRect &dirty) = 0;
 
   // Passes a generic nsIPropertyBag options argument, along with the
   // previous one, if any.  Optional.
   NS_IMETHOD SetContextOptions(nsIPropertyBag *aNewOptions) { return NS_OK; }
--- a/content/canvas/src/nsCanvasRenderingContext2D.cpp
+++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp
@@ -344,20 +344,21 @@ public:
                               const PRUnichar* aEncoderOptions,
                               nsIInputStream **aStream);
     NS_IMETHOD GetThebesSurface(gfxASurface **surface);
     mozilla::TemporaryRef<mozilla::gfx::SourceSurface> GetSurfaceSnapshot()
         { return nsnull; }
 
     NS_IMETHOD SetIsOpaque(PRBool isOpaque);
     NS_IMETHOD Reset();
-    already_AddRefed<CanvasLayer> GetCanvasLayer(nsDisplayListBuilder* aBuilder,
-                                                 CanvasLayer *aOldLayer,
-                                                 LayerManager *aManager);
-    void MarkContextClean();
+    virtual already_AddRefed<CanvasLayer> GetCanvasLayer(nsDisplayListBuilder* aBuilder,
+                                                         CanvasLayer *aOldLayer,
+                                                         LayerManager *aManager);
+    virtual PRBool ShouldForceInactiveLayer(LayerManager *aManager);
+    virtual void MarkContextClean();
     NS_IMETHOD SetIsIPC(PRBool isIPC);
     // this rect is in canvas device space
     NS_IMETHOD Redraw(const gfxRect &r);
     // this rect is in mThebes's current user space
     NS_IMETHOD RedrawUser(const gfxRect &r);
 
     // nsISupports interface + CC
     NS_DECL_CYCLE_COLLECTING_ISUPPORTS
@@ -1066,19 +1067,17 @@ nsCanvasRenderingContext2D::SetDimension
         if (height == 0 || width == 0) {
             mZero = PR_TRUE;
             height = 1;
             width = 1;
         }
 
         gfxASurface::gfxImageFormat format = GetImageFormat();
 
-        if (PR_GetEnv("MOZ_CANVAS_IMAGE_SURFACE")) {
-            surface = new gfxImageSurface(gfxIntSize(width, height), format);
-        } else {
+        if (!PR_GetEnv("MOZ_CANVAS_IMAGE_SURFACE")) {
             nsCOMPtr<nsIContent> content =
                 do_QueryInterface(static_cast<nsIDOMHTMLCanvasElement*>(mCanvasElement));
             nsIDocument* ownerDoc = nsnull;
             if (content)
                 ownerDoc = content->GetOwnerDoc();
             nsRefPtr<LayerManager> layerManager = nsnull;
 
             if (ownerDoc)
@@ -1088,18 +1087,25 @@ nsCanvasRenderingContext2D::SetDimension
             if (layerManager) {
               surface = layerManager->CreateOptimalSurface(gfxIntSize(width, height), format);
             } else {
               surface = gfxPlatform::GetPlatform()->
                 CreateOffscreenSurface(gfxIntSize(width, height), gfxASurface::ContentFromFormat(format));
             }
         }
 
-        if (surface && surface->CairoStatus() != 0)
-            surface = NULL;
+        if (!surface || surface->CairoStatus()) {
+            // If we couldn't create a surface of the type we want, fall back
+            // to an image surface. This lets us handle surface sizes that
+            // the underlying cairo backend might not handle.
+            surface = new gfxImageSurface(gfxIntSize(width, height), format);
+            if (!surface || surface->CairoStatus()) {
+                surface = nsnull;
+            }
+        }
     }
     if (surface) {
         if (gCanvasMemoryReporter == nsnull) {
             gCanvasMemoryReporter = new NS_MEMORY_REPORTER_NAME(CanvasMemory);
             NS_RegisterMemoryReporter(gCanvasMemoryReporter);
         }
 
         gCanvasMemoryUsed += width * height * 4;
@@ -4012,16 +4018,22 @@ nsCanvasRenderingContext2D::GetCanvasLay
     canvasLayer->SetContentFlags(flags);
     canvasLayer->Updated();
 
     mResetLayer = PR_FALSE;
 
     return canvasLayer.forget();
 }
 
+PRBool
+nsCanvasRenderingContext2D::ShouldForceInactiveLayer(LayerManager *aManager)
+{
+    return !aManager->CanUseCanvasLayerForSize(gfxIntSize(mWidth, mHeight));
+}
+
 void
 nsCanvasRenderingContext2D::MarkContextClean()
 {
     if (mInvalidateCount > 0) {
         mPredictManyRedrawCalls = mInvalidateCount > kCanvasMaxInvalidateCount;
     }
     mIsEntireFrameInvalid = PR_FALSE;
     mInvalidateCount = 0;
--- a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+++ b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
@@ -189,89 +189,16 @@ public:
 
     mStops = aRT->CreateGradientStops(mRawStops.Elements(), mRawStops.Length());
 
     return mStops;
   }
 
   NS_DECL_ISUPPORTS
 
-protected:
-  nsCanvasGradientAzure(Type aType) : mType(aType)
-  {}
-
-  nsTArray<GradientStop> mRawStops;
-  RefPtr<GradientStops> mStops;
-  Type mType;
-};
-
-class nsCanvasRadialGradientAzure : public nsCanvasGradientAzure
-{
-public:
-  nsCanvasRadialGradientAzure(const Point &aBeginOrigin, Float aBeginRadius,
-                              const Point &aEndOrigin, Float aEndRadius)
-    : nsCanvasGradientAzure(RADIAL)
-    , mCenter(aEndOrigin)
-    , mRadius(aEndRadius)
-  {
-    mOffsetStart = aBeginRadius / mRadius;
-
-    mOffsetRatio = 1 - mOffsetStart;
-    mOrigin = ((mCenter * aBeginRadius) - (aBeginOrigin * mRadius)) /
-              (aBeginRadius - mRadius);
-  }
-
-
-  /* nsIDOMCanvasGradient */
-  NS_IMETHOD AddColorStop (float offset,
-                            const nsAString& colorstr)
-  {
-    if (!FloatValidate(offset) || offset < 0.0 || offset > 1.0) {
-      return NS_ERROR_DOM_INDEX_SIZE_ERR;
-    }
-
-    nscolor color;
-    nsCSSParser parser;
-    nsresult rv = parser.ParseColorString(nsString(colorstr),
-                                          nsnull, 0, &color);
-    if (NS_FAILED(rv)) {
-      return NS_ERROR_DOM_SYNTAX_ERR;
-    }
-
-    mStops = nsnull;
-
-    GradientStop newStop;
-
-    newStop.offset = offset * mOffsetRatio + mOffsetStart;
-    newStop.color = Color::FromABGR(color);
-
-    mRawStops.AppendElement(newStop);
-
-    return NS_OK;
-  }
-
-  // XXX - Temporary gradient code, this will be fixed soon as per bug 666097
-  Point mCenter;
-  Float mRadius;
-  Point mOrigin;
-
-  Float mOffsetStart;
-  Float mOffsetRatio;
-};
-
-class nsCanvasLinearGradientAzure : public nsCanvasGradientAzure
-{
-public:
-  nsCanvasLinearGradientAzure(const Point &aBegin, const Point &aEnd)
-    : nsCanvasGradientAzure(LINEAR)
-    , mBegin(aBegin)
-    , mEnd(aEnd)
-  {
-  }
-
   /* nsIDOMCanvasGradient */
   NS_IMETHOD AddColorStop (float offset,
                             const nsAString& colorstr)
   {
     if (!FloatValidate(offset) || offset < 0.0 || offset > 1.0) {
       return NS_ERROR_DOM_INDEX_SIZE_ERR;
     }
 
@@ -291,16 +218,54 @@ public:
     newStop.color = Color::FromABGR(color);
 
     mRawStops.AppendElement(newStop);
 
     return NS_OK;
   }
 
 protected:
+  nsCanvasGradientAzure(Type aType) : mType(aType)
+  {}
+
+  nsTArray<GradientStop> mRawStops;
+  RefPtr<GradientStops> mStops;
+  Type mType;
+};
+
+class nsCanvasRadialGradientAzure : public nsCanvasGradientAzure
+{
+public:
+  nsCanvasRadialGradientAzure(const Point &aBeginOrigin, Float aBeginRadius,
+                              const Point &aEndOrigin, Float aEndRadius)
+    : nsCanvasGradientAzure(RADIAL)
+    , mCenter1(aBeginOrigin)
+    , mCenter2(aEndOrigin)
+    , mRadius1(aBeginRadius)
+    , mRadius2(aEndRadius)
+  {
+  }
+
+  Point mCenter1;
+  Point mCenter2;
+  Float mRadius1;
+  Float mRadius2;
+};
+
+class nsCanvasLinearGradientAzure : public nsCanvasGradientAzure
+{
+public:
+  nsCanvasLinearGradientAzure(const Point &aBegin, const Point &aEnd)
+    : nsCanvasGradientAzure(LINEAR)
+    , mBegin(aBegin)
+    , mEnd(aEnd)
+  {
+  }
+
+protected:
   friend class nsCanvasRenderingContext2DAzure;
 
   // Beginning of linear gradient.
   Point mBegin;
   // End of linear gradient.
   Point mEnd;
 };
 
@@ -822,18 +787,18 @@ protected:
           LinearGradientPattern(gradient->mBegin, gradient->mEnd,
                                 gradient->GetGradientStopsForTarget(aRT));
       } else if (state.gradientStyles[aStyle] &&
                  state.gradientStyles[aStyle]->GetType() == nsCanvasGradientAzure::RADIAL) {
         nsCanvasRadialGradientAzure *gradient =
           static_cast<nsCanvasRadialGradientAzure*>(state.gradientStyles[aStyle].get());
 
         mPattern = new (mRadialGradientPattern.addr())
-          RadialGradientPattern(gradient->mCenter, gradient->mOrigin, gradient->mRadius,
-                                gradient->GetGradientStopsForTarget(aRT));
+          RadialGradientPattern(gradient->mCenter1, gradient->mCenter2, gradient->mRadius1,
+                                gradient->mRadius2, gradient->GetGradientStopsForTarget(aRT));
       } else if (state.patternStyles[aStyle]) {
         if (aCtx->mCanvasElement) {
           CanvasUtils::DoDrawImageSecurityCheck(aCtx->HTMLCanvasElement(),
                                                 state.patternStyles[aStyle]->mPrincipal,
                                                 state.patternStyles[aStyle]->mForceWriteOnly);
         }
 
         ExtendMode mode;
--- a/content/canvas/test/test_2d.gradient.radial.cone.top.html
+++ b/content/canvas/test/test_2d.gradient.radial.cone.top.html
@@ -1,27 +1,16 @@
 <!DOCTYPE HTML>
 <title>Canvas test: 2d.gradient.radial.cone.top</title>
 <script src="/MochiKit/packed.js"></script>
 <script src="/tests/SimpleTest/SimpleTest.js"></script>
 <link rel="stylesheet" href="/tests/SimpleTest/test.css">
 <body>
 <canvas id="c" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
 <script>
-
-function IsAzureEnabled() {
-  var enabled = false;
-
-  try {
-    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-    enabled = Components.classes["@mozilla.org/gfx/info;1"].getService(Components.interfaces.nsIGfxInfo).AzureEnabled;
-  } catch (e) { }
-
-  return enabled;
-}
 
 function isPixel(ctx, x,y, r,g,b,a, pos, colour, d) {
     var pixel = ctx.getImageData(x, y, 1, 1);
     var pr = pixel.data[0],
         pg = pixel.data[1],
         pb = pixel.data[2],
         pa = pixel.data[3];
     ok(r-d <= pr && pr <= r+d &&
@@ -54,36 +43,23 @@ ctx.fillStyle = '#f00';
 ctx.fillRect(0, 0, 100, 50);
 
 var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101);
 g.addColorStop(0, '#f00');
 g.addColorStop(1, '#0f0');
 ctx.fillStyle = g;
 ctx.fillRect(0, 0, 100, 50);
 
-if (IsAzureEnabled()) {
-  // XXX - See Bug 666097.
-  todo_isPixel(ctx, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 0);
-  todo_isPixel(ctx, 50,1, 0,255,0,255, "50,1", "0,255,0,255", 0);
-  todo_isPixel(ctx, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 0);
-  todo_isPixel(ctx, 1,25, 0,255,0,255, "1,25", "0,255,0,255", 0);
-  todo_isPixel(ctx, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 0);
-  todo_isPixel(ctx, 98,25, 0,255,0,255, "98,25", "0,255,0,255", 0);
-  todo_isPixel(ctx, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 0);
-  todo_isPixel(ctx, 50,48, 0,255,0,255, "50,48", "0,255,0,255", 0);
-  todo_isPixel(ctx, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 0);
-} else {
-  isPixel(ctx, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 0);
-  isPixel(ctx, 50,1, 0,255,0,255, "50,1", "0,255,0,255", 0);
-  isPixel(ctx, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 0);
-  isPixel(ctx, 1,25, 0,255,0,255, "1,25", "0,255,0,255", 0);
-  isPixel(ctx, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 0);
-  isPixel(ctx, 98,25, 0,255,0,255, "98,25", "0,255,0,255", 0);
-  isPixel(ctx, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 0);
-  isPixel(ctx, 50,48, 0,255,0,255, "50,48", "0,255,0,255", 0);
-  isPixel(ctx, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 0);
-}
+isPixel(ctx, 1,1, 0,255,0,255, "1,1", "0,255,0,255", 0);
+isPixel(ctx, 50,1, 0,255,0,255, "50,1", "0,255,0,255", 0);
+isPixel(ctx, 98,1, 0,255,0,255, "98,1", "0,255,0,255", 0);
+isPixel(ctx, 1,25, 0,255,0,255, "1,25", "0,255,0,255", 0);
+isPixel(ctx, 50,25, 0,255,0,255, "50,25", "0,255,0,255", 0);
+isPixel(ctx, 98,25, 0,255,0,255, "98,25", "0,255,0,255", 0);
+isPixel(ctx, 1,48, 0,255,0,255, "1,48", "0,255,0,255", 0);
+isPixel(ctx, 50,48, 0,255,0,255, "50,48", "0,255,0,255", 0);
+isPixel(ctx, 98,48, 0,255,0,255, "98,48", "0,255,0,255", 0);
 
 SimpleTest.finish();
 
 });
 </script>
 
--- a/content/canvas/test/test_canvas.html
+++ b/content/canvas/test/test_canvas.html
@@ -6394,38 +6394,25 @@ ctx.fillStyle = '#f00';
 ctx.fillRect(0, 0, 100, 50);
 
 var g = ctx.createRadialGradient(210, 25, 100, 230, 25, 100);
 g.addColorStop(0, '#0f0');
 g.addColorStop(1, '#f00');
 ctx.fillStyle = g;
 ctx.fillRect(0, 0, 100, 50);
 
-if (IsAzureEnabled()) {
-  // XXX - See Bug 666097.
-  todo_isPixel(ctx, 1, 1, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 50, 1, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 98, 1, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 1, 25, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 50, 25, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 98, 25, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 1, 48, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 50, 48, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 98, 48, 0, 255, 0, 255, 0);
-} else {
-  isPixel(ctx, 1, 1, 0, 255, 0, 255, 0);
-  isPixel(ctx, 50, 1, 0, 255, 0, 255, 0);
-  isPixel(ctx, 98, 1, 0, 255, 0, 255, 0);
-  isPixel(ctx, 1, 25, 0, 255, 0, 255, 0);
-  isPixel(ctx, 50, 25, 0, 255, 0, 255, 0);
-  isPixel(ctx, 98, 25, 0, 255, 0, 255, 0);
-  isPixel(ctx, 1, 48, 0, 255, 0, 255, 0);
-  isPixel(ctx, 50, 48, 0, 255, 0, 255, 0);
-  isPixel(ctx, 98, 48, 0, 255, 0, 255, 0);
-}
+isPixel(ctx, 1, 1, 0, 255, 0, 255, 0);
+isPixel(ctx, 50, 1, 0, 255, 0, 255, 0);
+isPixel(ctx, 98, 1, 0, 255, 0, 255, 0);
+isPixel(ctx, 1, 25, 0, 255, 0, 255, 0);
+isPixel(ctx, 50, 25, 0, 255, 0, 255, 0);
+isPixel(ctx, 98, 25, 0, 255, 0, 255, 0);
+isPixel(ctx, 1, 48, 0, 255, 0, 255, 0);
+isPixel(ctx, 50, 48, 0, 255, 0, 255, 0);
+isPixel(ctx, 98, 48, 0, 255, 0, 255, 0);
 
 }
 </script>
 
 <!-- [[[ test_2d.gradient.radial.cone.front.html ]]] -->
 
 <p>Canvas test: 2d.gradient.radial.cone.front</p>
 <canvas id="c235" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
@@ -6565,39 +6552,25 @@ ctx.fillStyle = '#f00';
 ctx.fillRect(0, 0, 100, 50);
 
 var g = ctx.createRadialGradient(230, 25, 100, 100, 25, 101);
 g.addColorStop(0, '#f00');
 g.addColorStop(1, '#0f0');
 ctx.fillStyle = g;
 ctx.fillRect(0, 0, 100, 50);
 
-
-if (IsAzureEnabled()) {
-  // XXX - See Bug 666097.
-  todo_isPixel(ctx, 1, 1, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 50, 1, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 98, 1, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 1, 25, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 50, 25, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 98, 25, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 1, 48, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 50, 48, 0, 255, 0, 255, 0);
-  todo_isPixel(ctx, 98, 48, 0, 255, 0, 255, 0);
-} else {
-  isPixel(ctx, 1, 1, 0, 255, 0, 255, 0);
-  isPixel(ctx, 50, 1, 0, 255, 0, 255, 0);
-  isPixel(ctx, 98, 1, 0, 255, 0, 255, 0);
-  isPixel(ctx, 1, 25, 0, 255, 0, 255, 0);
-  isPixel(ctx, 50, 25, 0, 255, 0, 255, 0);
-  isPixel(ctx, 98, 25, 0, 255, 0, 255, 0);
-  isPixel(ctx, 1, 48, 0, 255, 0, 255, 0);
-  isPixel(ctx, 50, 48, 0, 255, 0, 255, 0);
-  isPixel(ctx, 98, 48, 0, 255, 0, 255, 0);
-}
+isPixel(ctx, 1, 1, 0, 255, 0, 255, 0);
+isPixel(ctx, 50, 1, 0, 255, 0, 255, 0);
+isPixel(ctx, 98, 1, 0, 255, 0, 255, 0);
+isPixel(ctx, 1, 25, 0, 255, 0, 255, 0);
+isPixel(ctx, 50, 25, 0, 255, 0, 255, 0);
+isPixel(ctx, 98, 25, 0, 255, 0, 255, 0);
+isPixel(ctx, 1, 48, 0, 255, 0, 255, 0);
+isPixel(ctx, 50, 48, 0, 255, 0, 255, 0);
+isPixel(ctx, 98, 48, 0, 255, 0, 255, 0);
 
 }
 </script>
 
 <!-- [[[ test_2d.gradient.radial.equal.html ]]] -->
 
 <p>Canvas test: 2d.gradient.radial.equal</p>
 <canvas id="c239" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
--- a/content/html/content/public/nsHTMLCanvasElement.h
+++ b/content/html/content/public/nsHTMLCanvasElement.h
@@ -165,16 +165,20 @@ public:
 
   /*
    * Helpers called by various users of Canvas
    */
 
   already_AddRefed<CanvasLayer> GetCanvasLayer(nsDisplayListBuilder* aBuilder,
                                                CanvasLayer *aOldLayer,
                                                LayerManager *aManager);
+  // Should return true if the canvas layer should always be marked inactive.
+  // We should return true here if we can't do accelerated compositing with
+  // a non-BasicCanvasLayer.
+  PRBool ShouldForceInactiveLayer(LayerManager *aManager);
 
   // Call this whenever we need future changes to the canvas
   // to trigger fresh invalidation requests. This needs to be called
   // whenever we render the canvas contents to the screen, or whenever we
   // take a snapshot of the canvas that needs to be "live" (e.g. -moz-element).
   void MarkContextClean();
 
   virtual nsXPCClassInfo* GetClassInfo();
@@ -188,16 +192,17 @@ protected:
                        bool& aFellBackToPNG);
   nsresult ToDataURLImpl(const nsAString& aMimeType,
                          nsIVariant* aEncoderOptions,
                          nsAString& aDataURL);
   nsresult MozGetAsFileImpl(const nsAString& aName,
                             const nsAString& aType,
                             nsIDOMFile** aResult);
   nsresult GetContextHelper(const nsAString& aContextId,
+                            PRBool aForceThebes,
                             nsICanvasRenderingContextInternal **aContext);
 
   nsString mCurrentContextId;
   nsCOMPtr<nsICanvasRenderingContextInternal> mCurrentContext;
   
 public:
   // Record whether this canvas should be write-only or not.
   // We set this when script paints an image from a different origin.
--- a/content/html/content/src/nsHTMLCanvasElement.cpp
+++ b/content/html/content/src/nsHTMLCanvasElement.cpp
@@ -375,21 +375,22 @@ nsHTMLCanvasElement::MozGetAsFileImpl(co
   nsRefPtr<nsDOMMemoryFile> file =
     new nsDOMMemoryFile(imgData, imgSize, aName, type);
 
   return CallQueryInterface(file, aResult);
 }
 
 nsresult
 nsHTMLCanvasElement::GetContextHelper(const nsAString& aContextId,
+                                      PRBool aForceThebes,
                                       nsICanvasRenderingContextInternal **aContext)
 {
   NS_ENSURE_ARG(aContext);
 
-  NS_LossyConvertUTF16toASCII ctxId(aContextId);
+  NS_ConvertUTF16toUTF8 ctxId(aContextId);
 
   // check that ctxId is clamped to A-Za-z0-9_-
   for (PRUint32 i = 0; i < ctxId.Length(); i++) {
     if ((ctxId[i] < 'A' || ctxId[i] > 'Z') &&
         (ctxId[i] < 'a' || ctxId[i] > 'z') &&
         (ctxId[i] < '0' || ctxId[i] > '9') &&
         (ctxId[i] != '-') &&
         (ctxId[i] != '_'))
@@ -397,16 +398,20 @@ nsHTMLCanvasElement::GetContextHelper(co
       // XXX ERRMSG we need to report an error to developers here! (bug 329026)
       return NS_OK;
     }
   }
 
   nsCString ctxString("@mozilla.org/content/canvas-rendering-context;1?id=");
   ctxString.Append(ctxId);
 
+  if (aForceThebes && ctxId.EqualsASCII("2d")) {
+    ctxString.AssignASCII("@mozilla.org/content/2dthebes-canvas-rendering-context;1");
+  }
+
   nsresult rv;
   nsCOMPtr<nsICanvasRenderingContextInternal> ctx =
     do_CreateInstance(ctxString.get(), &rv);
   if (rv == NS_ERROR_OUT_OF_MEMORY) {
     *aContext = nsnull;
     return NS_ERROR_OUT_OF_MEMORY;
   }
   if (NS_FAILED(rv)) {
@@ -428,18 +433,20 @@ nsHTMLCanvasElement::GetContextHelper(co
 
 NS_IMETHODIMP
 nsHTMLCanvasElement::GetContext(const nsAString& aContextId,
                                 const jsval& aContextOptions,
                                 nsISupports **aContext)
 {
   nsresult rv;
 
-  if (mCurrentContextId.IsEmpty()) {
-    rv = GetContextHelper(aContextId, getter_AddRefs(mCurrentContext));
+  PRBool forceThebes = PR_FALSE;
+
+  while (mCurrentContextId.IsEmpty()) {
+    rv = GetContextHelper(aContextId, forceThebes, getter_AddRefs(mCurrentContext));
     NS_ENSURE_SUCCESS(rv, rv);
     if (!mCurrentContext) {
       return NS_OK;
     }
 
     // Ensure that the context participates in CC.  Note that returning a
     // CC participant from QI doesn't addref.
     nsXPCOMCycleCollectionParticipant *cp = nsnull;
@@ -501,21 +508,28 @@ nsHTMLCanvasElement::GetContext(const ns
       }
 
       contextProps = newProps;
     }
 
     rv = UpdateContext(contextProps);
     if (NS_FAILED(rv)) {
       mCurrentContext = nsnull;
+      if (!forceThebes) {
+        // Try again with a Thebes context
+        forceThebes = PR_TRUE;
+        continue;
+      }
       return rv;
     }
 
     mCurrentContextId.Assign(aContextId);
-  } else if (!mCurrentContextId.Equals(aContextId)) {
+    break;
+  }
+  if (!mCurrentContextId.Equals(aContextId)) {
     //XXX eventually allow for more than one active context on a given canvas
     return NS_OK;
   }
 
   NS_ADDREF (*aContext = mCurrentContext);
   return NS_OK;
 }
 
@@ -530,17 +544,17 @@ nsHTMLCanvasElement::MozGetIPCContext(co
 
   // We only support 2d shmem contexts for now.
   if (!aContextId.Equals(NS_LITERAL_STRING("2d")))
     return NS_ERROR_INVALID_ARG;
 
   nsresult rv;
 
   if (mCurrentContextId.IsEmpty()) {
-    rv = GetContextHelper(aContextId, getter_AddRefs(mCurrentContext));
+    rv = GetContextHelper(aContextId, PR_FALSE, getter_AddRefs(mCurrentContext));
     NS_ENSURE_SUCCESS(rv, rv);
     if (!mCurrentContext) {
       return NS_OK;
     }
 
     mCurrentContext->SetIsIPC(PR_TRUE);
 
     rv = UpdateContext();
@@ -695,16 +709,22 @@ nsHTMLCanvasElement::GetCanvasLayer(nsDi
                                     LayerManager *aManager)
 {
   if (!mCurrentContext)
     return nsnull;
 
   return mCurrentContext->GetCanvasLayer(aBuilder, aOldLayer, aManager);
 }
 
+PRBool
+nsHTMLCanvasElement::ShouldForceInactiveLayer(LayerManager *aManager)
+{
+  return !mCurrentContext || mCurrentContext->ShouldForceInactiveLayer(aManager);
+}
+
 void
 nsHTMLCanvasElement::MarkContextClean()
 {
   if (!mCurrentContext)
     return;
 
   mCurrentContext->MarkContextClean();
 }
--- a/content/media/nsBuiltinDecoderReader.cpp
+++ b/content/media/nsBuiltinDecoderReader.cpp
@@ -305,34 +305,77 @@ nsresult nsBuiltinDecoderReader::DecodeT
         return NS_ERROR_FAILURE;
       }
     }
     LOG(PR_LOG_DEBUG, ("First video frame after decode is %lld", startTime));
   }
 
   if (HasAudio()) {
     // Decode audio forward to the seek target.
+    PRInt64 targetSample = 0;
+    if (!UsecsToSamples(aTarget, mInfo.mAudioRate, targetSample)) {
+      return NS_ERROR_FAILURE;
+    }
     PRBool eof = PR_FALSE;
     while (HasAudio() && !eof) {
       while (!eof && mAudioQueue.GetSize() == 0) {
         eof = !DecodeAudioData();
         {
           ReentrantMonitorAutoExit exitReaderMon(mReentrantMonitor);
           ReentrantMonitorAutoEnter decoderMon(mDecoder->GetReentrantMonitor());
           if (mDecoder->GetDecodeState() == nsBuiltinDecoderStateMachine::DECODER_STATE_SHUTDOWN) {
             return NS_ERROR_FAILURE;
           }
         }
       }
-      nsAutoPtr<SoundData> audio(mAudioQueue.PeekFront());
-      if (audio && audio->mTime + audio->mDuration <= aTarget) {
-        mAudioQueue.PopFront();
+      const SoundData* audio = mAudioQueue.PeekFront();
+      if (!audio)
+        break;
+      PRInt64 startSample = 0;
+      if (!UsecsToSamples(audio->mTime, mInfo.mAudioRate, startSample)) {
+        return NS_ERROR_FAILURE;
+      }
+      if (startSample + audio->mSamples <= targetSample) {
+        // Our seek target lies after the samples in this SoundData. Pop it
+        // off the queue, and keep decoding forwards.
+        delete mAudioQueue.PopFront();
         audio = nsnull;
-      } else {
-        audio.forget();
+        continue;
+      }
+
+      // The seek target lies somewhere in this SoundData's samples, strip off
+      // any samples which lie before the seek target, so we'll begin playback
+      // exactly at the seek target.
+      NS_ASSERTION(targetSample >= startSample, "Target must at or be after data start.");
+      NS_ASSERTION(startSample + audio->mSamples > targetSample, "Data must end after target.");
+
+      PRInt64 samplesToPrune = targetSample - startSample;
+      if (samplesToPrune > audio->mSamples) {
+        // We've messed up somehow. Don't try to trim samples, the |samples|
+        // variable below will overflow.
+        NS_WARNING("Can't prune more samples that we have!");
         break;
       }
+      PRUint32 samples = audio->mSamples - static_cast<PRUint32>(samplesToPrune);
+      PRUint32 channels = audio->mChannels;
+      nsAutoArrayPtr<SoundDataValue> audioData(new SoundDataValue[samples * channels]);
+      memcpy(audioData.get(),
+             audio->mAudioData.get() + (samplesToPrune * channels),
+             samples * channels * sizeof(SoundDataValue));
+      PRInt64 duration;
+      if (!SamplesToUsecs(samples, mInfo.mAudioRate, duration)) {
+        return NS_ERROR_FAILURE;
+      }
+      nsAutoPtr<SoundData> data(new SoundData(audio->mOffset,
+                                              aTarget,
+                                              duration,
+                                              samples,
+                                              audioData.forget(),
+                                              channels));
+      delete mAudioQueue.PopFront();
+      mAudioQueue.PushFront(data.forget());
+      break;
     }
   }
   return NS_OK;
 }
 
 
--- a/docshell/shistory/src/nsSHistory.cpp
+++ b/docshell/shistory/src/nsSHistory.cpp
@@ -1491,16 +1491,17 @@ nsSHistory::LoadEntry(PRInt32 aIndex, lo
         listener->OnHistoryGotoIndex(aIndex, nextURI, &canNavigate);
       }
     }
   }
 
   if (!canNavigate) {
     // If the listener asked us not to proceed with 
     // the operation, simply return.    
+    mRequestedIndex = -1;
     return NS_OK;  // XXX Maybe I can return some other error code?
   }
 
   nsCOMPtr<nsIURI> nexturi;
   PRInt32 pCount=0, nCount=0;
   nsCOMPtr<nsISHContainer> prevAsContainer(do_QueryInterface(prevEntry));
   nsCOMPtr<nsISHContainer> nextAsContainer(do_QueryInterface(nextEntry));
   if (prevAsContainer && nextAsContainer) {
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -9084,16 +9084,18 @@ nsGlobalWindow::RunTimeout(nsTimeout *aT
   PR_INSERT_AFTER(&dummy_timeout, last_expired_timeout);
 
   // Don't let ClearWindowTimeouts throw away our stack-allocated
   // dummy timeout.
   dummy_timeout.AddRef();
   dummy_timeout.AddRef();
 
   last_insertion_point = mTimeoutInsertionPoint;
+  // If we ever start setting mTimeoutInsertionPoint to a non-dummy timeout,
+  // the logic in ResetTimersForNonBackgroundWindow will need to change.
   mTimeoutInsertionPoint = &dummy_timeout;
 
   for (timeout = FirstTimeout();
        timeout != &dummy_timeout && !IsFrozen();
        timeout = nextTimeout) {
     nextTimeout = timeout->Next();
 
     if (timeout->mFiringDepth != firingDepth) {
@@ -9421,17 +9423,26 @@ nsresult nsGlobalWindow::ResetTimersForN
                    NS_ERROR_NOT_INITIALIZED);
 
   if (IsFrozen() || mTimeoutsSuspendDepth) {
     return NS_OK;
   }
 
   TimeStamp now = TimeStamp::Now();
 
-  for (nsTimeout *timeout = FirstTimeout(); IsTimeout(timeout); ) {
+  // If mTimeoutInsertionPoint is non-null, we're in the middle of firing
+  // timers and the timers we're planning to fire all come before
+  // mTimeoutInsertionPoint; mTimeoutInsertionPoint itself is a dummy timeout
+  // with an mWhen that may be semi-bogus.  In that case, we don't need to do
+  // anything with mTimeoutInsertionPoint or anything before it, so should
+  // start at the timer after mTimeoutInsertionPoint, if there is one.
+  // Otherwise, start at the beginning of the list.
+  for (nsTimeout *timeout = mTimeoutInsertionPoint ?
+         mTimeoutInsertionPoint->Next() : FirstTimeout();
+       IsTimeout(timeout); ) {
     // It's important that this check be <= so that we guarantee that
     // taking NS_MAX with |now| won't make a quantity equal to
     // timeout->mWhen below.
     if (timeout->mWhen <= now) {
       timeout = timeout->Next();
       continue;
     }
 
--- a/dom/base/nsGlobalWindow.h
+++ b/dom/base/nsGlobalWindow.h
@@ -909,18 +909,24 @@ protected:
   nsCOMPtr<nsIDOMStorage>      mSessionStorage;
 
   nsCOMPtr<nsIXPConnectJSObjectHolder> mInnerWindowHolder;
   nsCOMPtr<nsIPrincipal> mOpenerScriptPrincipal; // strong; used to determine
                                                  // whether to clear scope
 
   // These member variable are used only on inner windows.
   nsRefPtr<nsEventListenerManager> mListenerManager;
+  // mTimeouts is generally sorted by mWhen, unless mTimeoutInsertionPoint is
+  // non-null.  In that case, the dummy timeout pointed to by
+  // mTimeoutInsertionPoint may have a later mWhen than some of the timeouts
+  // that come after it.
   PRCList                       mTimeouts;
   // If mTimeoutInsertionPoint is non-null, insertions should happen after it.
+  // This is a dummy timeout at the moment; if that ever changes, the logic in
+  // ResetTimersForNonBackgroundWindow needs to change.
   nsTimeout*                    mTimeoutInsertionPoint;
   PRUint32                      mTimeoutPublicIdCounter;
   PRUint32                      mTimeoutFiringDepth;
   nsRefPtr<nsLocation>          mLocation;
   nsRefPtr<nsHistory>           mHistory;
 
   // Holder of the dummy java plugin, used to expose window.java and
   // window.packages.
--- a/gfx/2d/2D.h
+++ b/gfx/2d/2D.h
@@ -241,32 +241,35 @@ class RadialGradientPattern : public Pat
 {
 public:
   /*
    * aBegin Start of the linear gradient
    * aEnd End of the linear gradient
    * aStops GradientStops object for this gradient, this should match the
    *        backend type of the draw target this pattern will be used with.
    */
-  RadialGradientPattern(const Point &aCenter,
-                        const Point &aOrigin,
-                        Float aRadius,
+  RadialGradientPattern(const Point &aCenter1,
+                        const Point &aCenter2,
+                        Float aRadius1,
+                        Float aRadius2,
                         GradientStops *aStops)
-    : mCenter(aCenter)
-    , mOrigin(aOrigin)
-    , mRadius(aRadius)
+    : mCenter1(aCenter1)
+    , mCenter2(aCenter2)
+    , mRadius1(aRadius1)
+    , mRadius2(aRadius2)
     , mStops(aStops)
   {
   }
 
   virtual PatternType GetType() const { return PATTERN_RADIAL_GRADIENT; }
 
-  Point mCenter;
-  Point mOrigin;
-  Float mRadius;
+  Point mCenter1;
+  Point mCenter2;
+  Float mRadius1;
+  Float mRadius2;
   RefPtr<GradientStops> mStops;
 };
 
 /*
  * This class is used for Surface Patterns, they wrap a surface and a
  * repetition mode for the surface. This may be used on the stack.
  */
 class SurfacePattern : public Pattern
--- a/gfx/2d/DrawTargetD2D.cpp
+++ b/gfx/2d/DrawTargetD2D.cpp
@@ -224,17 +224,17 @@ void
 DrawTargetD2D::DrawSurface(SourceSurface *aSurface,
                            const Rect &aDest,
                            const Rect &aSource,
                            const DrawSurfaceOptions &aSurfOptions,
                            const DrawOptions &aOptions)
 {
   RefPtr<ID2D1Bitmap> bitmap;
 
-  ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp);
+  ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, ColorPattern(Color()));
   
   PrepareForDrawing(rt);
 
   Rect srcRect = aSource;
 
   switch (aSurface->GetType()) {
 
   case SURFACE_D2D1_BITMAP:
@@ -274,17 +274,17 @@ DrawTargetD2D::DrawSurface(SourceSurface
         srcSurf->mDrawTarget->mDependentTargets.push_back(this);
       }
     }
     break;
   }
 
   rt->DrawBitmap(bitmap, D2DRect(aDest), aOptions.mAlpha, D2DFilter(aSurfOptions.mFilter), D2DRect(srcRect));
 
-  FinalizeRTForOperator(aOptions.mCompositionOp, aDest);
+  FinalizeRTForOperation(aOptions.mCompositionOp, ColorPattern(Color()), aDest);
 }
 
 void
 DrawTargetD2D::DrawSurfaceWithShadow(SourceSurface *aSurface,
                                      const Point &aDest,
                                      const Color &aColor,
                                      const Point &aOffset,
                                      Float aSigma,
@@ -688,145 +688,145 @@ DrawTargetD2D::CopySurface(SourceSurface
                   D2DRect(srcRect));
 }
 
 void
 DrawTargetD2D::FillRect(const Rect &aRect,
                         const Pattern &aPattern,
                         const DrawOptions &aOptions)
 {
-  ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp);
+  ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern);
 
   PrepareForDrawing(rt);
 
   RefPtr<ID2D1Brush> brush = CreateBrushForPattern(aPattern, aOptions.mAlpha);
 
   if (brush) {
     rt->FillRectangle(D2DRect(aRect), brush);
   }
 
-  FinalizeRTForOperator(aOptions.mCompositionOp, aRect);
+  FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, aRect);
 }
 
 void
 DrawTargetD2D::StrokeRect(const Rect &aRect,
                           const Pattern &aPattern,
                           const StrokeOptions &aStrokeOptions,
                           const DrawOptions &aOptions)
 {
-  ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp);
+  ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern);
 
   PrepareForDrawing(rt);
 
   RefPtr<ID2D1Brush> brush = CreateBrushForPattern(aPattern, aOptions.mAlpha);
 
   RefPtr<ID2D1StrokeStyle> strokeStyle = CreateStrokeStyleForOptions(aStrokeOptions);
 
   if (brush && strokeStyle) {
     rt->DrawRectangle(D2DRect(aRect), brush, aStrokeOptions.mLineWidth, strokeStyle);
   }
 
-  FinalizeRTForOperator(aOptions.mCompositionOp, aRect);
+  FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, aRect);
 }
 
 void
 DrawTargetD2D::StrokeLine(const Point &aStart,
                           const Point &aEnd,
                           const Pattern &aPattern,
                           const StrokeOptions &aStrokeOptions,
                           const DrawOptions &aOptions)
 {
-  ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp);
+  ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern);
 
   PrepareForDrawing(rt);
 
   RefPtr<ID2D1Brush> brush = CreateBrushForPattern(aPattern, aOptions.mAlpha);
 
   RefPtr<ID2D1StrokeStyle> strokeStyle = CreateStrokeStyleForOptions(aStrokeOptions);
 
   if (brush && strokeStyle) {
     rt->DrawLine(D2DPoint(aStart), D2DPoint(aEnd), brush, aStrokeOptions.mLineWidth, strokeStyle);
   }
 
-  FinalizeRTForOperator(aOptions.mCompositionOp, Rect(0, 0, Float(mSize.width), Float(mSize.height)));
+  FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, Rect(0, 0, Float(mSize.width), Float(mSize.height)));
 }
 
 void
 DrawTargetD2D::Stroke(const Path *aPath,
                       const Pattern &aPattern,
                       const StrokeOptions &aStrokeOptions,
                       const DrawOptions &aOptions)
 {
   if (aPath->GetBackendType() != BACKEND_DIRECT2D) {
     gfxDebug() << *this << ": Ignoring drawing call for incompatible path.";
     return;
   }
 
   const PathD2D *d2dPath = static_cast<const PathD2D*>(aPath);
 
-  ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp);
+  ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern);
 
   PrepareForDrawing(rt);
 
   RefPtr<ID2D1Brush> brush = CreateBrushForPattern(aPattern, aOptions.mAlpha);
 
   RefPtr<ID2D1StrokeStyle> strokeStyle = CreateStrokeStyleForOptions(aStrokeOptions);
 
   if (brush && strokeStyle) {
     rt->DrawGeometry(d2dPath->mGeometry, brush, aStrokeOptions.mLineWidth, strokeStyle);
   }
 
-  FinalizeRTForOperator(aOptions.mCompositionOp, Rect(0, 0, Float(mSize.width), Float(mSize.height)));
+  FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, Rect(0, 0, Float(mSize.width), Float(mSize.height)));
 }
 
 void
 DrawTargetD2D::Fill(const Path *aPath,
                     const Pattern &aPattern,
                     const DrawOptions &aOptions)
 {
   if (aPath->GetBackendType() != BACKEND_DIRECT2D) {
     gfxDebug() << *this << ": Ignoring drawing call for incompatible path.";
     return;
   }
 
   const PathD2D *d2dPath = static_cast<const PathD2D*>(aPath);
 
-  ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp);
+  ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern);
 
   PrepareForDrawing(rt);
 
   RefPtr<ID2D1Brush> brush = CreateBrushForPattern(aPattern, aOptions.mAlpha);
 
   if (brush) {
     rt->FillGeometry(d2dPath->mGeometry, brush);
   }
 
   Rect bounds;
   if (aOptions.mCompositionOp != OP_OVER) {
     D2D1_RECT_F d2dbounds;
     d2dPath->mGeometry->GetBounds(D2D1::IdentityMatrix(), &d2dbounds);
     bounds = ToRect(d2dbounds);
   }
-  FinalizeRTForOperator(aOptions.mCompositionOp, bounds);
+  FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, bounds);
 }
 
 void
 DrawTargetD2D::FillGlyphs(ScaledFont *aFont,
                           const GlyphBuffer &aBuffer,
                           const Pattern &aPattern,
                           const DrawOptions &aOptions)
 {
   if (aFont->GetType() != FONT_DWRITE) {
     gfxDebug() << *this << ": Ignoring drawing call for incompatible font.";
     return;
   }
 
   ScaledFontDWrite *font = static_cast<ScaledFontDWrite*>(aFont);
 
-  ID2D1RenderTarget *rt = GetRTForOperator(aOptions.mCompositionOp);
+  ID2D1RenderTarget *rt = GetRTForOperation(aOptions.mCompositionOp, aPattern);
 
   PrepareForDrawing(rt);
 
   RefPtr<ID2D1Brush> brush = CreateBrushForPattern(aPattern, aOptions.mAlpha);
 
   DWRITE_GLYPH_RUN glyphRun;
 
   glyphRun.bidiLevel = 0;
@@ -852,17 +852,17 @@ DrawTargetD2D::FillGlyphs(ScaledFont *aF
   glyphRun.glyphAdvances = &advances.front();
   glyphRun.glyphIndices = &indices.front();
   glyphRun.glyphOffsets = &offsets.front();
 
   if (brush) {
     rt->DrawGlyphRun(D2D1::Point2F(), &glyphRun, brush);
   }
 
-  FinalizeRTForOperator(aOptions.mCompositionOp, Rect(0, 0, (Float)mSize.width, (Float)mSize.height));
+  FinalizeRTForOperation(aOptions.mCompositionOp, aPattern, Rect(0, 0, (Float)mSize.width, (Float)mSize.height));
 }
 
 void
 DrawTargetD2D::PushClip(const Path *aPath)
 {
   if (aPath->GetBackendType() != BACKEND_DIRECT2D) {
     gfxDebug() << *this << ": Ignoring clipping call for incompatible path.";
     return;
@@ -981,23 +981,23 @@ DrawTargetD2D::CreatePathBuilder(FillRul
   if (aFillRule == FILL_WINDING) {
     sink->SetFillMode(D2D1_FILL_MODE_WINDING);
   }
 
   return new PathBuilderD2D(sink, path, aFillRule);
 }
 
 TemporaryRef<GradientStops>
-DrawTargetD2D::CreateGradientStops(GradientStop *aStops, uint32_t aNumStops) const
+DrawTargetD2D::CreateGradientStops(GradientStop *rawStops, uint32_t aNumStops) const
 {
   D2D1_GRADIENT_STOP *stops = new D2D1_GRADIENT_STOP[aNumStops];
 
   for (uint32_t i = 0; i < aNumStops; i++) {
-    stops[i].position = aStops[i].offset;
-    stops[i].color = D2DColor(aStops[i].color);
+    stops[i].position = rawStops[i].offset;
+    stops[i].color = D2DColor(rawStops[i].color);
   }
 
   RefPtr<ID2D1GradientStopCollection> stopCollection;
 
   HRESULT hr = mRT->CreateGradientStopCollection(stops, aNumStops, byRef(stopCollection));
 
   if (FAILED(hr)) {
     gfxWarning() << "Failed to create GradientStopCollection. Code: " << hr;
@@ -1285,19 +1285,19 @@ DrawTargetD2D::GetBlendStateForOperator(
 
   return mPrivateData->mBlendStates[aOperator];
 }
 
 /* This function prepares the temporary RT for drawing and returns it when a
  * drawing operation other than OVER is required.
  */
 ID2D1RenderTarget*
-DrawTargetD2D::GetRTForOperator(CompositionOp aOperator)
+DrawTargetD2D::GetRTForOperation(CompositionOp aOperator, const Pattern &aPattern)
 {
-  if (aOperator == OP_OVER) {
+  if (aOperator == OP_OVER && !IsPatternSupportedByD2D(aPattern)) {
     return mRT;
   }
 
   PopAllClips();
 
   if (mTempRT) {
     mTempRT->Clear(D2D1::ColorF(0, 0));
     return mTempRT;
@@ -1326,19 +1326,19 @@ DrawTargetD2D::GetRTForOperator(Composit
 /* This function blends back the content of a drawing operation (drawn to an
  * empty surface with OVER, so the surface now contains the source operation
  * contents) to the rendertarget using the requested composition operation.
  * In order to respect clip for operations which are unbound by their mask,
  * the old content of the surface outside the clipped area may be blended back
  * to the surface.
  */
 void
-DrawTargetD2D::FinalizeRTForOperator(CompositionOp aOperator, const Rect &aBounds)
+DrawTargetD2D::FinalizeRTForOperation(CompositionOp aOperator, const Pattern &aPattern, const Rect &aBounds)
 {
-  if (aOperator == OP_OVER) {
+  if (aOperator == OP_OVER && !IsPatternSupportedByD2D(aPattern)) {
     return;
   }
 
   if (!mTempRT) {
     return;
   }
 
   for (unsigned int i = 0; i < mPushedClips.size(); i++) {
@@ -1372,23 +1372,36 @@ DrawTargetD2D::FinalizeRTForOperator(Com
   viewport.MaxDepth = 1;
   viewport.MinDepth = 0;
   viewport.Height = mSize.height;
   viewport.Width = mSize.width;
   viewport.TopLeftX = 0;
   viewport.TopLeftY = 0;
 
   mDevice->RSSetViewports(1, &viewport);
-  mPrivateData->mEffect->GetVariableByName("tex")->AsShaderResource()->SetResource(mSRView);
   mPrivateData->mEffect->GetVariableByName("QuadDesc")->AsVector()->
     SetFloatVector(ShaderConstantRectD3D10(-1.0f, 1.0f, 2.0f, -2.0f));
-  mPrivateData->mEffect->GetVariableByName("TexCoords")->AsVector()->
-    SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f));
+
+  if (!IsPatternSupportedByD2D(aPattern)) {
+    mPrivateData->mEffect->GetVariableByName("TexCoords")->AsVector()->
+      SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f));
+    mPrivateData->mEffect->GetVariableByName("tex")->AsShaderResource()->SetResource(mSRView);
+    mPrivateData->mEffect->GetTechniqueByName("SampleTexture")->GetPassByIndex(0)->Apply(0);
+  } else if (aPattern.GetType() == PATTERN_RADIAL_GRADIENT) {
+    const RadialGradientPattern *pat = static_cast<const RadialGradientPattern*>(&aPattern);
 
-  mPrivateData->mEffect->GetTechniqueByName("SampleTexture")->GetPassByIndex(0)->Apply(0);
+    if (pat->mCenter1 == pat->mCenter2 && pat->mRadius1 == pat->mRadius2) {
+      // Draw nothing!
+      return;
+    }
+
+    mPrivateData->mEffect->GetVariableByName("mask")->AsShaderResource()->SetResource(mSRView);
+
+    SetupEffectForRadialGradient(pat);
+  }
 
   mDevice->OMSetBlendState(GetBlendStateForOperator(aOperator), NULL, 0xffffffff);
   
   mDevice->Draw(4, 0);
 }
 
 TemporaryRef<ID2D1Geometry>
 DrawTargetD2D::GetClippedGeometry()
@@ -1499,16 +1512,22 @@ DrawTargetD2D::PopAllClips()
   
     mClipsArePushed = false;
   }
 }
 
 TemporaryRef<ID2D1Brush>
 DrawTargetD2D::CreateBrushForPattern(const Pattern &aPattern, Float aAlpha)
 {
+  if (IsPatternSupportedByD2D(aPattern)) {
+    RefPtr<ID2D1SolidColorBrush> colBrush;
+    mRT->CreateSolidColorBrush(D2D1::ColorF(1.0f, 1.0f, 1.0f, 1.0f), byRef(colBrush));
+    return colBrush;
+  }
+
   if (aPattern.GetType() == PATTERN_COLOR) {
     RefPtr<ID2D1SolidColorBrush> colBrush;
     Color color = static_cast<const ColorPattern*>(&aPattern)->mColor;
     mRT->CreateSolidColorBrush(D2D1::ColorF(color.r, color.g,
                                             color.b, color.a),
                                D2D1::BrushProperties(aAlpha),
                                byRef(colBrush));
     return colBrush;
@@ -1537,23 +1556,25 @@ DrawTargetD2D::CreateBrushForPattern(con
 
     GradientStopsD2D *stops = static_cast<GradientStopsD2D*>(pat->mStops.get());
 
     if (!stops) {
       gfxDebug() << "No stops specified for gradient pattern.";
       return NULL;
     }
 
-    mRT->CreateRadialGradientBrush(D2D1::RadialGradientBrushProperties(D2DPoint(pat->mCenter),
-                                                                       D2DPoint(pat->mOrigin - pat->mCenter),
-                                                                       pat->mRadius,
-                                                                       pat->mRadius),
-                                   D2D1::BrushProperties(aAlpha),
-                                   stops->mStopCollection,
-                                   byRef(gradBrush));
+    // This will not be a complex radial gradient brush.
+    mRT->CreateRadialGradientBrush(
+      D2D1::RadialGradientBrushProperties(D2DPoint(pat->mCenter1),
+                                          D2D1::Point2F(),
+                                          pat->mRadius2, pat->mRadius2),
+      D2D1::BrushProperties(aAlpha),
+      stops->mStopCollection,
+      byRef(gradBrush));
+
     return gradBrush;
   } else if (aPattern.GetType() == PATTERN_SURFACE) {
     RefPtr<ID2D1BitmapBrush> bmBrush;
     const SurfacePattern *pat =
       static_cast<const SurfacePattern*>(&aPattern);
 
     if (!pat->mSurface) {
       gfxDebug() << "No source surface specified for surface pattern";
@@ -1682,16 +1703,143 @@ DrawTargetD2D::CreateStrokeStyleForOptio
 
   if (FAILED(hr)) {
     gfxWarning() << "Failed to create Direct2D stroke style.";
   }
 
   return style;
 }
 
+TemporaryRef<ID3D10Texture1D>
+DrawTargetD2D::CreateGradientTexture(const GradientStopsD2D *aStops)
+{
+  CD3D10_TEXTURE1D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM, 4096, 1, 1);
+
+  std::vector<D2D1_GRADIENT_STOP> rawStops;
+  rawStops.resize(aStops->mStopCollection->GetGradientStopCount());
+  aStops->mStopCollection->GetGradientStops(&rawStops.front(), rawStops.size());
+
+  std::vector<unsigned char> textureData;
+  textureData.resize(4096 * 4);
+  unsigned char *texData = &textureData.front();
+
+  float prevColorPos = 0;
+  float nextColorPos = 1.0f;
+  D2D1_COLOR_F prevColor = rawStops[0].color;
+  D2D1_COLOR_F nextColor = prevColor;
+
+  if (rawStops.size() >= 2) {
+    nextColor = rawStops[1].color;
+    nextColorPos = rawStops[1].position;
+  }
+
+  uint32_t stopPosition = 2;
+
+  // Not the most optimized way but this will do for now.
+  for (int i = 0; i < 4096; i++) {
+    // The 4095 seems a little counter intuitive, but we want the gradient
+    // color at offset 0 at the first pixel, and at offset 1.0f at the last
+    // pixel.
+    float pos = float(i) / 4095;
+
+    if (pos > nextColorPos) {
+      prevColor = nextColor;
+      prevColorPos = nextColorPos;
+      if (rawStops.size() > stopPosition) {
+        nextColor = rawStops[stopPosition].color;
+        nextColorPos = rawStops[stopPosition++].position;
+      } else {
+        nextColorPos = 1.0f;
+      }
+    }
+
+    float interp = (pos - prevColorPos) / (nextColorPos - prevColorPos);
+
+    Color newColor(prevColor.r + (nextColor.r - prevColor.r) * interp,
+                    prevColor.g + (nextColor.g - prevColor.g) * interp,
+                    prevColor.b + (nextColor.b - prevColor.b) * interp,
+                    prevColor.a + (nextColor.a - prevColor.a) * interp);
+
+    texData[i * 4] = (char)(255.0f * newColor.b);
+    texData[i * 4 + 1] = (char)(255.0f * newColor.g);
+    texData[i * 4 + 2] = (char)(255.0f * newColor.r);
+    texData[i * 4 + 3] = (char)(255.0f * newColor.a);
+  }
+
+  D3D10_SUBRESOURCE_DATA data;
+  data.pSysMem = &textureData.front();
+
+  RefPtr<ID3D10Texture1D> tex;
+  mDevice->CreateTexture1D(&desc, &data, byRef(tex));
+
+  return tex;
+}
+
+void
+DrawTargetD2D::SetupEffectForRadialGradient(const RadialGradientPattern *aPattern)
+{
+  mPrivateData->mEffect->GetTechniqueByName("SampleRadialGradient")->GetPassByIndex(0)->Apply(0);
+  mPrivateData->mEffect->GetVariableByName("MaskTexCoords")->AsVector()->
+    SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f));
+
+  float dimensions[] = { float(mSize.width), float(mSize.height), 0, 0 };
+  mPrivateData->mEffect->GetVariableByName("dimensions")->AsVector()->
+    SetFloatVector(dimensions);
+
+  const GradientStopsD2D *stops =
+    static_cast<const GradientStopsD2D*>(aPattern->mStops.get());
+
+  RefPtr<ID3D10Texture1D> tex = CreateGradientTexture(stops);
+
+  RefPtr<ID3D10ShaderResourceView> srView;
+  mDevice->CreateShaderResourceView(tex, NULL, byRef(srView));
+
+  mPrivateData->mEffect->GetVariableByName("tex")->AsShaderResource()->SetResource(srView);
+
+  Point dc = aPattern->mCenter2 - aPattern->mCenter1;
+  float dr = aPattern->mRadius2 - aPattern->mRadius1;
+
+  float diffv[] = { dc.x, dc.y, dr, 0 };
+  mPrivateData->mEffect->GetVariableByName("diff")->AsVector()->
+    SetFloatVector(diffv);
+
+  float center1[] = { aPattern->mCenter1.x, aPattern->mCenter1.y, dr, 0 };
+  mPrivateData->mEffect->GetVariableByName("center1")->AsVector()->
+    SetFloatVector(center1);
+
+  mPrivateData->mEffect->GetVariableByName("radius1")->AsScalar()->
+    SetFloat(aPattern->mRadius1);
+  mPrivateData->mEffect->GetVariableByName("sq_radius1")->AsScalar()->
+    SetFloat(pow(aPattern->mRadius1, 2));
+
+  Matrix invTransform = mTransform;
+
+  if (!invTransform.Invert()) {
+    // Bail if the matrix is singular.
+    return;
+  }
+  float matrix[] = { invTransform._11, invTransform._12, 0, 0,
+                      invTransform._21, invTransform._22, 0, 0,
+                      invTransform._31, invTransform._32, 1.0f, 0,
+                      0, 0, 0, 1.0f };
+
+  mPrivateData->mEffect->GetVariableByName("DeviceSpaceToUserSpace")->
+    AsMatrix()->SetMatrix(matrix);
+
+  float A = dc.x * dc.x + dc.y * dc.y - dr * dr;
+  if (A == 0) {
+    mPrivateData->mEffect->GetTechniqueByName("SampleRadialGradient")->
+      GetPassByIndex(1)->Apply(0);
+  } else {
+    mPrivateData->mEffect->GetVariableByName("A")->AsScalar()->SetFloat(A);
+    mPrivateData->mEffect->GetTechniqueByName("SampleRadialGradient")->
+      GetPassByIndex(0)->Apply(0);
+  }
+}
+
 ID2D1Factory*
 DrawTargetD2D::factory()
 {
   if (mFactory) {
     return mFactory;
   }
 
   D2D1CreateFactoryFunc createD2DFactory;
--- a/gfx/2d/DrawTargetD2D.h
+++ b/gfx/2d/DrawTargetD2D.h
@@ -45,16 +45,17 @@
 
 #include <vector>
 #include <sstream>
 
 namespace mozilla {
 namespace gfx {
 
 class SourceSurfaceD2DTarget;
+class GradientStopsD2D;
 
 struct PrivateD3D10DataD2D
 {
   RefPtr<ID3D10Effect> mEffect;
   RefPtr<ID3D10InputLayout> mInputLayout;
   RefPtr<ID3D10Buffer> mVB;
   RefPtr<ID3D10BlendState> mBlendStates[OP_COUNT];
 };
@@ -149,27 +150,32 @@ private:
   bool InitD2DRenderTarget();
   void PrepareForDrawing(ID2D1RenderTarget *aRT);
 
   // This function will mark the surface as changing, and make sure any
   // copy-on-write snapshots are notified.
   void MarkChanged();
 
   ID3D10BlendState *GetBlendStateForOperator(CompositionOp aOperator);
-  ID2D1RenderTarget *GetRTForOperator(CompositionOp aOperator);
-  void FinalizeRTForOperator(CompositionOp aOperator, const Rect &aBounds);
-  void EnsureViews();
+  ID2D1RenderTarget *GetRTForOperation(CompositionOp aOperator, const Pattern &aPattern);
+  void FinalizeRTForOperation(CompositionOp aOperator, const Pattern &aPattern, const Rect &aBounds);  void EnsureViews();
   void PopAllClips();
 
   TemporaryRef<ID2D1RenderTarget> CreateRTForTexture(ID3D10Texture2D *aTexture);
   TemporaryRef<ID2D1Geometry> GetClippedGeometry();
 
   TemporaryRef<ID2D1Brush> CreateBrushForPattern(const Pattern &aPattern, Float aAlpha = 1.0f);
   TemporaryRef<ID2D1StrokeStyle> CreateStrokeStyleForOptions(const StrokeOptions &aStrokeOptions);
 
+  TemporaryRef<ID3D10Texture1D> CreateGradientTexture(const GradientStopsD2D *aStops);
+
+  void SetupEffectForRadialGradient(const RadialGradientPattern *aPattern);
+
+  static const uint32_t test = 4;
+
   IntSize mSize;
 
   RefPtr<ID3D10Device1> mDevice;
   RefPtr<ID3D10Texture2D> mTexture;
   mutable RefPtr<ID2D1RenderTarget> mRT;
 
   // Temporary texture and render target used for supporting alternative operators.
   RefPtr<ID3D10Texture2D> mTempTexture;
--- a/gfx/2d/HelpersD2D.h
+++ b/gfx/2d/HelpersD2D.h
@@ -146,16 +146,39 @@ static inline int BytesPerPixel(SurfaceF
   switch (aFormat) {
   case FORMAT_A8:
     return 1;
   default:
     return 4;
   }
 }
 
+static bool IsPatternSupportedByD2D(const Pattern &aPattern)
+{
+  if (aPattern.GetType() != PATTERN_RADIAL_GRADIENT) {
+    return false;
+  }
+
+  const RadialGradientPattern *pat =
+    static_cast<const RadialGradientPattern*>(&aPattern);
+  
+  if (pat->mRadius1 != 0) {
+    return true;
+  }
+
+  Point diff = pat->mCenter2 - pat->mCenter1;
+
+  if (sqrt(diff.x * diff.x + diff.y * diff.y) >= pat->mRadius2) {
+    // Inner point lies outside the circle.
+    return true;
+  }
+
+  return false;
+}
+
 /**
  * This structure is used to pass rectangles to our shader constant. We can use
  * this for passing rectangular areas to SetVertexShaderConstant. In the format
  * of a 4 component float(x,y,width,height). Our vertex shader can then use
  * this to construct rectangular positions from the 0,0-1,1 quad that we source
  * it with.
  */
 struct ShaderConstantRectD3D10
--- a/gfx/2d/ShadersD2D.fx
+++ b/gfx/2d/ShadersD2D.fx
@@ -19,23 +19,42 @@ cbuffer cb0
 cbuffer cb1
 {
     float4 BlurOffsetsH[3];
     float4 BlurOffsetsV[3];
     float4 BlurWeights[3];
     float4 ShadowColor;
 }
 
+cbuffer cb2
+{
+    float3x3 DeviceSpaceToUserSpace;
+    float2 dimensions;
+    // Precalculate as much as we can!
+    float3 diff;
+    float2 center1;
+    float A;
+    float radius1;
+    float sq_radius1;
+}
+
 struct VS_OUTPUT
 {
     float4 Position : SV_Position;
     float2 TexCoord : TEXCOORD0;
     float2 MaskTexCoord : TEXCOORD1;
 };
 
+struct VS_RADIAL_OUTPUT
+{
+    float4 Position : SV_Position;
+    float2 MaskTexCoord : TEXCOORD0;
+    float2 PixelCoord : TEXCOORD1;
+};
+
 Texture2D tex;
 Texture2D mask;
 
 sampler sSampler = sampler_state {
     Filter = MIN_MAG_MIP_LINEAR;
     Texture = tex;
     AddressU = Clamp;
     AddressV = Clamp;
@@ -89,26 +108,107 @@ VS_OUTPUT SampleTextureVS(float3 pos : P
     Output.Position.z = 0;
     Output.TexCoord.x = pos.x * TexCoords.z + TexCoords.x;
     Output.TexCoord.y = pos.y * TexCoords.w + TexCoords.y;
     Output.MaskTexCoord.x = pos.x * MaskTexCoords.z + MaskTexCoords.x;
     Output.MaskTexCoord.y = pos.y * MaskTexCoords.w + MaskTexCoords.y;
     return Output;
 }
 
+VS_RADIAL_OUTPUT SampleRadialVS(float3 pos : POSITION)
+{
+    VS_RADIAL_OUTPUT Output;
+    Output.Position.w = 1.0f;
+    Output.Position.x = pos.x * QuadDesc.z + QuadDesc.x;
+    Output.Position.y = pos.y * QuadDesc.w + QuadDesc.y;
+    Output.Position.z = 0;
+    Output.MaskTexCoord.x = pos.x * MaskTexCoords.z + MaskTexCoords.x;
+    Output.MaskTexCoord.y = pos.y * MaskTexCoords.w + MaskTexCoords.y;
+
+    // For the radial gradient pixel shader we need to pass in the pixel's
+    // coordinates in user space for the color to be correctly determined.
+
+    Output.PixelCoord.x = ((Output.Position.x + 1.0f) / 2.0f) * dimensions.x;
+    Output.PixelCoord.y = ((1.0f - Output.Position.y) / 2.0f) * dimensions.y;
+    Output.PixelCoord.xy = mul(float3(Output.PixelCoord.x, Output.PixelCoord.y, 1.0f), DeviceSpaceToUserSpace).xy;
+    return Output;
+}
+
 float4 SampleTexturePS( VS_OUTPUT In) : SV_Target
 {
     return tex.Sample(sSampler, In.TexCoord);
 };
 
 float4 SampleMaskTexturePS( VS_OUTPUT In) : SV_Target
 {
     return tex.Sample(sSampler, In.TexCoord) * mask.Sample(sMaskSampler, In.MaskTexCoord).a;
 };
 
+float4 SampleRadialGradientPS( VS_RADIAL_OUTPUT In) : SV_Target
+{
+    // Radial gradient painting is defined as the set of circles whose centers
+    // are described by C(t) = (C2 - C1) * t + C1; with radii
+    // R(t) = (R2 - R1) * t + R1; for R(t) > 0. This shader solves the
+    // quadratic equation that arises when calculating t for pixel (x, y).
+    //
+    // A more extensive derrivation can be found in the pixman radial gradient
+    // code.
+ 
+    float2 p = In.PixelCoord;
+    float3 dp = float3(p - center1, radius1);
+
+    // dpx * dcx + dpy * dcy + r * dr
+    float B = dot(dp, diff);
+
+    float C = pow(dp.x, 2) + pow(dp.y, 2) - sq_radius1;
+
+    float det = pow(B, 2) - A * C;
+
+    if (det < 0) {
+      return float4(0, 0, 0, 0);
+    }
+
+    float sqrt_det = sqrt(abs(det));
+
+    float2 t = (B + float2(sqrt_det, -sqrt_det)) / A;
+
+    float2 isValid = step(float2(-radius1, -radius1), t * diff.z);
+
+    if (max(isValid.x, isValid.y) <= 0) {
+      return float4(0, 0, 0, 0);
+    }
+
+    float upper_t = lerp(t.y, t.x, isValid.x);
+
+    // Multiply the output color by the input mask for the operation.
+    return tex.Sample(sSampler, float2(upper_t, 0.5)) * mask.Sample(sMaskSampler, In.MaskTexCoord).a;
+};
+
+float4 SampleRadialGradientA0PS( VS_RADIAL_OUTPUT In) : SV_Target
+{
+    // This simpler shader is used for the degenerate case where A is 0,
+    // i.e. we're actually solving a linear equation.
+
+    float2 p = In.PixelCoord;
+    float3 dp = float3(p - center1, radius1);
+
+    // dpx * dcx + dpy * dcy + r * dr
+    float B = dot(dp, diff);
+
+    float C = pow(dp.x, 2) + pow(dp.y, 2) - pow(radius1, 2);
+
+    float t = 0.5 * C / B;
+
+    if (-radius1 >= t * diff.z) {
+      return float4(0, 0, 0, 0);
+    }
+
+    return tex.Sample(sSampler, float2(t, 0.5)) * mask.Sample(sMaskSampler, In.MaskTexCoord).a;
+};
+
 float4 SampleShadowHPS( VS_OUTPUT In) : SV_Target
 {
     float outputStrength = 0;
 
     outputStrength += BlurWeights[0].x * tex.Sample(sShadowSampler, float2(In.TexCoord.x + BlurOffsetsH[0].x, In.TexCoord.y)).a;
     outputStrength += BlurWeights[0].y * tex.Sample(sShadowSampler, float2(In.TexCoord.x + BlurOffsetsH[0].y, In.TexCoord.y)).a;
     outputStrength += BlurWeights[0].z * tex.Sample(sShadowSampler, float2(In.TexCoord.x + BlurOffsetsH[0].z, In.TexCoord.y)).a;
     outputStrength += BlurWeights[0].w * tex.Sample(sShadowSampler, float2(In.TexCoord.x + BlurOffsetsH[0].w, In.TexCoord.y)).a;
@@ -161,16 +261,34 @@ technique10 SampleTexture
     {
         SetRasterizerState(TextureRast);
         SetVertexShader(CompileShader(vs_4_0_level_9_3, SampleTextureVS()));
         SetGeometryShader(NULL);
         SetPixelShader(CompileShader(ps_4_0_level_9_3, SampleTexturePS()));
     }
 }
 
+technique10 SampleRadialGradient
+{
+    pass P0
+    {
+        SetRasterizerState(TextureRast);
+        SetVertexShader(CompileShader(vs_4_0_level_9_3, SampleRadialVS()));
+        SetGeometryShader(NULL);
+        SetPixelShader(CompileShader(ps_4_0_level_9_3, SampleRadialGradientPS()));
+    }
+    pass P1
+    {
+        SetRasterizerState(TextureRast);
+        SetVertexShader(CompileShader(vs_4_0_level_9_3, SampleRadialVS()));
+        SetGeometryShader(NULL);
+        SetPixelShader(CompileShader(ps_4_0_level_9_3, SampleRadialGradientA0PS()));
+    }
+}
+
 technique10 SampleMaskedTexture
 {
     pass P0
     {
         SetRasterizerState(TextureRast);
         SetVertexShader(CompileShader(vs_4_0_level_9_3, SampleTextureVS()));
         SetGeometryShader(NULL);
         SetPixelShader(CompileShader(ps_4_0_level_9_3, SampleMaskTexturePS()));
--- a/gfx/2d/ShadersD2D.h
+++ b/gfx/2d/ShadersD2D.h
@@ -1,30 +1,41 @@
 #if 0
 //
 // FX Version: fx_4_0
 // Child effect (requires effect pool): false
 //
-// 2 local buffer(s)
+// 3 local buffer(s)
 //
 cbuffer cb0
 {
     float4  QuadDesc;                   // Offset:    0, size:   16
     float4  TexCoords;                  // Offset:   16, size:   16
     float4  MaskTexCoords;              // Offset:   32, size:   16
 }
 
 cbuffer cb1
 {
     float4  BlurOffsetsH[3];            // Offset:    0, size:   48
     float4  BlurOffsetsV[3];            // Offset:   48, size:   48
     float4  BlurWeights[3];             // Offset:   96, size:   48
     float4  ShadowColor;                // Offset:  144, size:   16
 }
 
+cbuffer cb2
+{
+    float3x3 DeviceSpaceToUserSpace;    // Offset:    0, size:   44
+    float2  dimensions;                 // Offset:   48, size:    8
+    float3  diff;                       // Offset:   64, size:   12
+    float2  center1;                    // Offset:   80, size:    8
+    float   A;                          // Offset:   88, size:    4
+    float   radius1;                    // Offset:   92, size:    4
+    float   sq_radius1;                 // Offset:   96, size:    4
+}
+
 //
 // 8 local object(s)
 //
 Texture2D tex;
 Texture2D mask;
 SamplerState sSampler
 {
     Filter   = uint(MIN_MAG_MIP_LINEAR /* 21 */);
@@ -65,17 +76,17 @@ BlendState ShadowBlendV
     BlendOp[0] = uint(ADD /* 1 */);
     SrcBlendAlpha[0] = uint(ONE /* 2 */);
     DestBlendAlpha[0] = uint(INV_SRC_ALPHA /* 6 */);
     BlendOpAlpha[0] = uint(ADD /* 1 */);
     RenderTargetWriteMask[0] = byte(0x0f);
 };
 
 //
-// 3 technique(s)
+// 4 technique(s)
 //
 technique10 SampleTexture
 {
     pass P0
     {
         RasterizerState = TextureRast;
         VertexShader = asm {
             //
@@ -214,16 +225,527 @@ technique10 SampleTexture
             ret 
             // Approximately 2 instruction slots used
                     
         };
     }
 
 }
 
+technique10 SampleRadialGradient
+{
+    pass P0
+    {
+        RasterizerState = TextureRast;
+        VertexShader = asm {
+            //
+            // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
+            //
+            //
+            // Buffer Definitions: 
+            //
+            // cbuffer cb0
+            // {
+            //
+            //   float4 QuadDesc;                   // Offset:    0 Size:    16
+            //   float4 TexCoords;                  // Offset:   16 Size:    16 [unused]
+            //   float4 MaskTexCoords;              // Offset:   32 Size:    16
+            //
+            // }
+            //
+            // cbuffer cb2
+            // {
+            //
+            //   float3x3 DeviceSpaceToUserSpace;   // Offset:    0 Size:    44
+            //   float2 dimensions;                 // Offset:   48 Size:     8
+            //   float3 diff;                       // Offset:   64 Size:    12 [unused]
+            //   float2 center1;                    // Offset:   80 Size:     8 [unused]
+            //   float A;                           // Offset:   88 Size:     4 [unused]
+            //   float radius1;                     // Offset:   92 Size:     4 [unused]
+            //   float sq_radius1;                  // Offset:   96 Size:     4 [unused]
+            //
+            // }
+            //
+            //
+            // Resource Bindings:
+            //
+            // Name                                 Type  Format         Dim Slot Elements
+            // ------------------------------ ---------- ------- ----------- ---- --------
+            // cb0                               cbuffer      NA          NA    0        1
+            // cb2                               cbuffer      NA          NA    1        1
+            //
+            //
+            //
+            // Input signature:
+            //
+            // Name                 Index   Mask Register SysValue Format   Used
+            // -------------------- ----- ------ -------- -------- ------ ------
+            // POSITION                 0   xyz         0     NONE  float   xy  
+            //
+            //
+            // Output signature:
+            //
+            // Name                 Index   Mask Register SysValue Format   Used
+            // -------------------- ----- ------ -------- -------- ------ ------
+            // SV_Position              0   xyzw        0      POS  float   xyzw
+            // TEXCOORD                 0   xy          1     NONE  float   xy  
+            // TEXCOORD                 1     zw        1     NONE  float     zw
+            //
+            //
+            // Constant buffer to DX9 shader constant mappings:
+            //
+            // Target Reg Buffer  Start Reg # of Regs        Data Conversion
+            // ---------- ------- --------- --------- ----------------------
+            // c1         cb0             0         1  ( FLT, FLT, FLT, FLT)
+            // c2         cb0             2         1  ( FLT, FLT, FLT, FLT)
+            // c3         cb1             0         2  ( FLT, FLT, FLT, FLT)
+            // c5         cb1             3         1  ( FLT, FLT, FLT, FLT)
+            //
+            //
+            // Runtime generated constant mappings:
+            //
+            // Target Reg                               Constant Description
+            // ---------- --------------------------------------------------
+            // c0                              Vertex Shader position offset
+            //
+            //
+            // Level9 shader bytecode:
+            //
+                vs_2_x
+                def c6, 1, 0.5, 0, 0
+                dcl_texcoord v0
+                mad oT0.xy, v0, c2.zwzw, c2
+                mad r0.xy, v0, c1.zwzw, c1
+                add r0.z, r0.x, c6.x
+                mul r0.z, r0.z, c5.x
+                mul r1.x, r0.z, c6.y
+                add r0.z, -r0.y, c6.x
+                add oPos.xy, r0, c0
+                mul r0.x, r0.z, c5.y
+                mul r1.y, r0.x, c6.y
+                mov r1.z, c6.x
+                dp3 oT0.w, r1, c3
+                dp3 oT0.z, r1, c4
+                mov oPos.zw, c6.xyzx
+            
+            // approximately 13 instruction slots used
+            vs_4_0
+            dcl_constantbuffer cb0[3], immediateIndexed
+            dcl_constantbuffer cb1[4], immediateIndexed
+            dcl_input v0.xy
+            dcl_output_siv o0.xyzw, position
+            dcl_output o1.xy
+            dcl_output o1.zw
+            dcl_temps 2
+            mov o0.zw, l(0,0,0,1.000000)
+            mad r0.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
+            mov o0.xy, r0.xyxx
+            add r0.x, r0.x, l(1.000000)
+            add r0.y, -r0.y, l(1.000000)
+            mul r0.xy, r0.xyxx, cb1[3].xyxx
+            mul r1.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
+            mov r1.z, l(1.000000)
+            dp3 o1.z, r1.xyzx, cb1[0].xyzx
+            dp3 o1.w, r1.xyzx, cb1[1].xyzx
+            mad o1.xy, v0.xyxx, cb0[2].zwzz, cb0[2].xyxx
+            ret 
+            // Approximately 12 instruction slots used
+                    
+        };
+        GeometryShader = NULL;
+        PixelShader = asm {
+            //
+            // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
+            //
+            //
+            // Buffer Definitions: 
+            //
+            // cbuffer cb2
+            // {
+            //
+            //   float3x3 DeviceSpaceToUserSpace;   // Offset:    0 Size:    44 [unused]
+            //   float2 dimensions;                 // Offset:   48 Size:     8 [unused]
+            //   float3 diff;                       // Offset:   64 Size:    12
+            //   float2 center1;                    // Offset:   80 Size:     8
+            //   float A;                           // Offset:   88 Size:     4
+            //   float radius1;                     // Offset:   92 Size:     4
+            //   float sq_radius1;                  // Offset:   96 Size:     4
+            //
+            // }
+            //
+            //
+            // Resource Bindings:
+            //
+            // Name                                 Type  Format         Dim Slot Elements
+            // ------------------------------ ---------- ------- ----------- ---- --------
+            // sSampler                          sampler      NA          NA    0        1
+            // sMaskSampler                      sampler      NA          NA    1        1
+            // tex                               texture  float4          2d    0        1
+            // mask                              texture  float4          2d    1        1
+            // cb2                               cbuffer      NA          NA    0        1
+            //
+            //
+            //
+            // Input signature:
+            //
+            // Name                 Index   Mask Register SysValue Format   Used
+            // -------------------- ----- ------ -------- -------- ------ ------
+            // SV_Position              0   xyzw        0      POS  float       
+            // TEXCOORD                 0   xy          1     NONE  float   xy  
+            // TEXCOORD                 1     zw        1     NONE  float     zw
+            //
+            //
+            // Output signature:
+            //
+            // Name                 Index   Mask Register SysValue Format   Used
+            // -------------------- ----- ------ -------- -------- ------ ------
+            // SV_Target                0   xyzw        0   TARGET  float   xyzw
+            //
+            //
+            // Constant buffer to DX9 shader constant mappings:
+            //
+            // Target Reg Buffer  Start Reg # of Regs        Data Conversion
+            // ---------- ------- --------- --------- ----------------------
+            // c0         cb0             4         3  ( FLT, FLT, FLT, FLT)
+            //
+            //
+            // Sampler/Resource to DX9 shader sampler mappings:
+            //
+            // Target Sampler Source Sampler  Source Resource
+            // -------------- --------------- ----------------
+            // s0             s0              t0               
+            // s1             s1              t1               
+            //
+            //
+            // Level9 shader bytecode:
+            //
+                ps_2_x
+                def c3, 0.5, 0, 0, 0
+                def c4, 1, -1, 0, -0
+                dcl t0
+                dcl_2d s0
+                dcl_2d s1
+                add r0.xy, t0.wzzw, -c1
+                dp2add r0.w, r0, r0, -c2.x
+                mul r0.w, r0.w, c1.z
+                mov r0.z, c1.w
+                dp3 r0.x, r0, c0
+                mad r0.y, r0.x, r0.x, -r0.w
+                abs r0.z, r0.y
+                rsq r0.z, r0.z
+                rcp r1.x, r0.z
+                mov r1.yz, -r1.x
+                add r0.xzw, r0.x, r1.xyyz
+                rcp r1.x, c1.z
+                mul r0.xzw, r0, r1.x
+                mov r1.w, c1.w
+                mad r1.xyz, r0.xzww, c0.z, r1.w
+                cmp r2.x, r1.x, r0.x, r0.w
+                cmp r0.xzw, r1.xyyz, c4.xyxy, c4.zyzw
+                mov r2.y, c3.x
+                texld r1, t0, s1
+                texld r2, r2, s0
+                mul r1, r1.w, r2
+                add r0.w, r0.w, r0.x
+                cmp r0.x, r0.w, r0.x, r0.z
+                cmp r1, -r0.x, c4.z, r1
+                cmp r0, r0.y, r1, c4.z
+                mov oC0, r0
+            
+            // approximately 27 instruction slots used (2 texture, 25 arithmetic)
+            ps_4_0
+            dcl_constantbuffer cb0[7], immediateIndexed
+            dcl_sampler s0, mode_default
+            dcl_sampler s1, mode_default
+            dcl_resource_texture2d (float,float,float,float) t0
+            dcl_resource_texture2d (float,float,float,float) t1
+            dcl_input_ps linear v1.xy
+            dcl_input_ps linear v1.zw
+            dcl_output o0.xyzw
+            dcl_temps 3
+            add r0.xy, v1.zwzz, -cb0[5].xyxx
+            mov r0.z, cb0[5].w
+            dp3 r0.z, r0.xyzx, cb0[4].xyzx
+            dp2 r0.x, r0.xyxx, r0.xyxx
+            add r0.x, r0.x, -cb0[6].x
+            mul r0.x, r0.x, cb0[5].z
+            mad r0.x, r0.z, r0.z, -r0.x
+            lt r0.y, r0.x, l(0.000000)
+            sqrt r1.x, |r0.x|
+            mov r1.y, -r1.x
+            add r0.xz, r0.zzzz, r1.xxyx
+            div r0.xz, r0.xxzx, cb0[5].zzzz
+            mul r1.xy, r0.xzxx, cb0[4].zzzz
+            ge r1.xy, r1.xyxx, -cb0[5].wwww
+            and r1.xy, r1.xyxx, l(0x3f800000, 0x3f800000, 0, 0)
+            add r0.x, -r0.z, r0.x
+            mad r2.x, r1.x, r0.x, r0.z
+            mov r2.y, l(0.500000)
+            sample r2.xyzw, r2.xyxx, t0.xyzw, s0
+            if_nz r0.y
+              mov o0.xyzw, l(0,0,0,0)
+              ret 
+            endif 
+            max r0.x, r1.y, r1.x
+            ge r0.x, l(0.000000), r0.x
+            if_nz r0.x
+              mov o0.xyzw, l(0,0,0,0)
+              ret 
+            endif 
+            sample r0.xyzw, v1.xyxx, t1.xyzw, s1
+            mul o0.xyzw, r0.wwww, r2.xyzw
+            ret 
+            // Approximately 32 instruction slots used
+                    
+        };
+    }
+
+    pass P1
+    {
+        RasterizerState = TextureRast;
+        VertexShader = asm {
+            //
+            // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
+            //
+            //
+            // Buffer Definitions: 
+            //
+            // cbuffer cb0
+            // {
+            //
+            //   float4 QuadDesc;                   // Offset:    0 Size:    16
+            //   float4 TexCoords;                  // Offset:   16 Size:    16 [unused]
+            //   float4 MaskTexCoords;              // Offset:   32 Size:    16
+            //
+            // }
+            //
+            // cbuffer cb2
+            // {
+            //
+            //   float3x3 DeviceSpaceToUserSpace;   // Offset:    0 Size:    44
+            //   float2 dimensions;                 // Offset:   48 Size:     8
+            //   float3 diff;                       // Offset:   64 Size:    12 [unused]
+            //   float2 center1;                    // Offset:   80 Size:     8 [unused]
+            //   float A;                           // Offset:   88 Size:     4 [unused]
+            //   float radius1;                     // Offset:   92 Size:     4 [unused]
+            //   float sq_radius1;                  // Offset:   96 Size:     4 [unused]
+            //
+            // }
+            //
+            //
+            // Resource Bindings:
+            //
+            // Name                                 Type  Format         Dim Slot Elements
+            // ------------------------------ ---------- ------- ----------- ---- --------
+            // cb0                               cbuffer      NA          NA    0        1
+            // cb2                               cbuffer      NA          NA    1        1
+            //
+            //
+            //
+            // Input signature:
+            //
+            // Name                 Index   Mask Register SysValue Format   Used
+            // -------------------- ----- ------ -------- -------- ------ ------
+            // POSITION                 0   xyz         0     NONE  float   xy  
+            //
+            //
+            // Output signature:
+            //
+            // Name                 Index   Mask Register SysValue Format   Used
+            // -------------------- ----- ------ -------- -------- ------ ------
+            // SV_Position              0   xyzw        0      POS  float   xyzw
+            // TEXCOORD                 0   xy          1     NONE  float   xy  
+            // TEXCOORD                 1     zw        1     NONE  float     zw
+            //
+            //
+            // Constant buffer to DX9 shader constant mappings:
+            //
+            // Target Reg Buffer  Start Reg # of Regs        Data Conversion
+            // ---------- ------- --------- --------- ----------------------
+            // c1         cb0             0         1  ( FLT, FLT, FLT, FLT)
+            // c2         cb0             2         1  ( FLT, FLT, FLT, FLT)
+            // c3         cb1             0         2  ( FLT, FLT, FLT, FLT)
+            // c5         cb1             3         1  ( FLT, FLT, FLT, FLT)
+            //
+            //
+            // Runtime generated constant mappings:
+            //
+            // Target Reg                               Constant Description
+            // ---------- --------------------------------------------------
+            // c0                              Vertex Shader position offset
+            //
+            //
+            // Level9 shader bytecode:
+            //
+                vs_2_x
+                def c6, 1, 0.5, 0, 0
+                dcl_texcoord v0
+                mad oT0.xy, v0, c2.zwzw, c2
+                mad r0.xy, v0, c1.zwzw, c1
+                add r0.z, r0.x, c6.x
+                mul r0.z, r0.z, c5.x
+                mul r1.x, r0.z, c6.y
+                add r0.z, -r0.y, c6.x
+                add oPos.xy, r0, c0
+                mul r0.x, r0.z, c5.y
+                mul r1.y, r0.x, c6.y
+                mov r1.z, c6.x
+                dp3 oT0.w, r1, c3
+                dp3 oT0.z, r1, c4
+                mov oPos.zw, c6.xyzx
+            
+            // approximately 13 instruction slots used
+            vs_4_0
+            dcl_constantbuffer cb0[3], immediateIndexed
+            dcl_constantbuffer cb1[4], immediateIndexed
+            dcl_input v0.xy
+            dcl_output_siv o0.xyzw, position
+            dcl_output o1.xy
+            dcl_output o1.zw
+            dcl_temps 2
+            mov o0.zw, l(0,0,0,1.000000)
+            mad r0.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
+            mov o0.xy, r0.xyxx
+            add r0.x, r0.x, l(1.000000)
+            add r0.y, -r0.y, l(1.000000)
+            mul r0.xy, r0.xyxx, cb1[3].xyxx
+            mul r1.xy, r0.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
+            mov r1.z, l(1.000000)
+            dp3 o1.z, r1.xyzx, cb1[0].xyzx
+            dp3 o1.w, r1.xyzx, cb1[1].xyzx
+            mad o1.xy, v0.xyxx, cb0[2].zwzz, cb0[2].xyxx
+            ret 
+            // Approximately 12 instruction slots used
+                    
+        };
+        GeometryShader = NULL;
+        PixelShader = asm {
+            //
+            // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
+            //
+            //
+            // Buffer Definitions: 
+            //
+            // cbuffer cb2
+            // {
+            //
+            //   float3x3 DeviceSpaceToUserSpace;   // Offset:    0 Size:    44 [unused]
+            //   float2 dimensions;                 // Offset:   48 Size:     8 [unused]
+            //   float3 diff;                       // Offset:   64 Size:    12
+            //   float2 center1;                    // Offset:   80 Size:     8
+            //   float A;                           // Offset:   88 Size:     4 [unused]
+            //   float radius1;                     // Offset:   92 Size:     4
+            //   float sq_radius1;                  // Offset:   96 Size:     4 [unused]
+            //
+            // }
+            //
+            //
+            // Resource Bindings:
+            //
+            // Name                                 Type  Format         Dim Slot Elements
+            // ------------------------------ ---------- ------- ----------- ---- --------
+            // sSampler                          sampler      NA          NA    0        1
+            // sMaskSampler                      sampler      NA          NA    1        1
+            // tex                               texture  float4          2d    0        1
+            // mask                              texture  float4          2d    1        1
+            // cb2                               cbuffer      NA          NA    0        1
+            //
+            //
+            //
+            // Input signature:
+            //
+            // Name                 Index   Mask Register SysValue Format   Used
+            // -------------------- ----- ------ -------- -------- ------ ------
+            // SV_Position              0   xyzw        0      POS  float       
+            // TEXCOORD                 0   xy          1     NONE  float   xy  
+            // TEXCOORD                 1     zw        1     NONE  float     zw
+            //
+            //
+            // Output signature:
+            //
+            // Name                 Index   Mask Register SysValue Format   Used
+            // -------------------- ----- ------ -------- -------- ------ ------
+            // SV_Target                0   xyzw        0   TARGET  float   xyzw
+            //
+            //
+            // Constant buffer to DX9 shader constant mappings:
+            //
+            // Target Reg Buffer  Start Reg # of Regs        Data Conversion
+            // ---------- ------- --------- --------- ----------------------
+            // c0         cb0             4         2  ( FLT, FLT, FLT, FLT)
+            //
+            //
+            // Sampler/Resource to DX9 shader sampler mappings:
+            //
+            // Target Sampler Source Sampler  Source Resource
+            // -------------- --------------- ----------------
+            // s0             s0              t0               
+            // s1             s1              t1               
+            //
+            //
+            // Level9 shader bytecode:
+            //
+                ps_2_x
+                def c2, 0.5, 0, 0, 0
+                dcl t0
+                dcl_2d s0
+                dcl_2d s1
+                mul r0.w, c1.w, c1.w
+                add r0.xy, t0.wzzw, -c1
+                dp2add r0.w, r0, r0, -r0.w
+                mul r0.w, r0.w, c2.x
+                mov r0.z, c1.w
+                dp3 r0.x, r0, c0
+                rcp r0.x, r0.x
+                mul r0.x, r0.x, r0.w
+                mov r0.y, c2.x
+                texld r1, t0, s1
+                texld r2, r0, s0
+                mov r0.w, c1.w
+                mad r0.x, r0.x, -c0.z, -r0.w
+                mul r1, r1.w, r2
+                cmp r0, r0.x, c2.y, r1
+                mov oC0, r0
+            
+            // approximately 17 instruction slots used (2 texture, 15 arithmetic)
+            ps_4_0
+            dcl_constantbuffer cb0[6], immediateIndexed
+            dcl_sampler s0, mode_default
+            dcl_sampler s1, mode_default
+            dcl_resource_texture2d (float,float,float,float) t0
+            dcl_resource_texture2d (float,float,float,float) t1
+            dcl_input_ps linear v1.xy
+            dcl_input_ps linear v1.zw
+            dcl_output o0.xyzw
+            dcl_temps 2
+            add r0.xy, v1.zwzz, -cb0[5].xyxx
+            mov r0.z, cb0[5].w
+            dp3 r0.z, r0.xyzx, cb0[4].xyzx
+            dp2 r0.x, r0.xyxx, r0.xyxx
+            mad r0.x, -cb0[5].w, cb0[5].w, r0.x
+            mul r0.x, r0.x, l(0.500000)
+            div r0.x, r0.x, r0.z
+            mul r0.z, r0.x, cb0[4].z
+            ge r0.z, -cb0[5].w, r0.z
+            mov r0.y, l(0.500000)
+            sample r1.xyzw, r0.xyxx, t0.xyzw, s0
+            if_nz r0.z
+              mov o0.xyzw, l(0,0,0,0)
+              ret 
+            endif 
+            sample r0.xyzw, v1.xyxx, t1.xyzw, s1
+            mul o0.xyzw, r0.wwww, r1.xyzw
+            ret 
+            // Approximately 18 instruction slots used
+                    
+        };
+    }
+
+}
+
 technique10 SampleMaskedTexture
 {
     pass P0
     {
         RasterizerState = TextureRast;
         VertexShader = asm {
             //
             // Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
@@ -1090,36 +1612,36 @@ technique10 SampleTextureWithShadow
     }
 
 }
 
 #endif
 
 const BYTE d2deffect[] =
 {
-     68,  88,  66,  67, 244, 198, 
-    222,  61,  43,  19,  42,  56, 
-    130, 197, 151, 242, 151,  57, 
-    208,  42,   1,   0,   0,   0, 
-    175,  67,   0,   0,   1,   0, 
+     68,  88,  66,  67,  85,  69, 
+      6,  83,  35, 167, 246, 209, 
+    147,  86, 117,  76, 228, 140, 
+    253, 202,   1,   0,   0,   0, 
+    169, 101,   0,   0,   1,   0, 
       0,   0,  36,   0,   0,   0, 
-     70,  88,  49,  48, 131,  67, 
+     70,  88,  49,  48, 125, 101, 
       0,   0,   1,  16, 255, 254, 
-      2,   0,   0,   0,   7,   0, 
+      3,   0,   0,   0,  14,   0, 
       0,   0,   8,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      3,   0,   0,   0, 203,  61, 
+      4,   0,   0,   0,  69,  94, 
       0,   0,   0,   0,   0,   0, 
       2,   0,   0,   0,   0,   0, 
       0,   0,   2,   0,   0,   0, 
       1,   0,   0,   0,   3,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,  10,   0, 
-      0,   0,  10,   0,   0,   0, 
+      0,   0,   0,   0,  14,   0, 
+      0,   0,  14,   0,   0,   0, 
       0,   0,   0,   0,  99,  98, 
      48,   0, 102, 108, 111,  97, 
     116,  52,   0,   8,   0,   0, 
       0,   1,   0,   0,   0,   0, 
       0,   0,   0,  16,   0,   0, 
       0,  16,   0,   0,   0,  16, 
       0,   0,   0,  10,  33,   0, 
       0,  81, 117,  97, 100,  68, 
@@ -1136,259 +1658,724 @@ const BYTE d2deffect[] =
      66, 108, 117, 114,  79, 102, 
     102, 115, 101, 116, 115,  72, 
       0,  66, 108, 117, 114,  79, 
     102, 102, 115, 101, 116, 115, 
      86,   0,  66, 108, 117, 114, 
      87, 101, 105, 103, 104, 116, 
     115,   0,  83, 104,  97, 100, 
     111, 119,  67, 111, 108, 111, 
-    114,   0,  84, 101, 120, 116, 
-    117, 114, 101,  50,  68,   0, 
-    158,   0,   0,   0,   2,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     12,   0,   0,   0, 116, 101, 
-    120,   0, 109,  97, 115, 107, 
-      0,  83,  97, 109, 112, 108, 
-    101, 114,  83, 116,  97, 116, 
-    101,   0, 205,   0,   0,   0, 
-      2,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+    114,   0,  99,  98,  50,   0, 
+    102, 108, 111,  97, 116,  51, 
+    120,  51,   0, 162,   0,   0, 
+      0,   1,   0,   0,   0,   0, 
+      0,   0,   0,  44,   0,   0, 
+      0,  48,   0,   0,   0,  36, 
+      0,   0,   0,  11,  91,   0, 
+      0,  68, 101, 118, 105,  99, 
+    101,  83, 112,  97,  99, 101, 
+     84, 111,  85, 115, 101, 114, 
+     83, 112,  97,  99, 101,   0, 
+    102, 108, 111,  97, 116,  50, 
+      0, 222,   0,   0,   0,   1, 
+      0,   0,   0,   0,   0,   0, 
+      0,   8,   0,   0,   0,  16, 
+      0,   0,   0,   8,   0,   0, 
+      0,  10,  17,   0,   0, 100, 
+    105, 109, 101, 110, 115, 105, 
+    111, 110, 115,   0, 102, 108, 
+    111,  97, 116,  51,   0,  12, 
+      1,   0,   0,   1,   0,   0, 
+      0,   0,   0,   0,   0,  12, 
+      0,   0,   0,  16,   0,   0, 
+      0,  12,   0,   0,   0,  10, 
+     25,   0,   0, 100, 105, 102, 
+    102,   0,  99, 101, 110, 116, 
+    101, 114,  49,   0, 102, 108, 
+    111,  97, 116,   0,  60,   1, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   4,   0, 
+      0,   0,  16,   0,   0,   0, 
+      4,   0,   0,   0,   9,   9, 
+      0,   0,  65,   0, 114,  97, 
+    100, 105, 117, 115,  49,   0, 
+    115, 113,  95, 114,  97, 100, 
+    105, 117, 115,  49,   0,  84, 
+    101, 120, 116, 117, 114, 101, 
+     50,  68,   0, 115,   1,   0, 
+      0,   2,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,  12,   0,   0, 
+      0, 116, 101, 120,   0, 109, 
+     97, 115, 107,   0,  83,  97, 
+    109, 112, 108, 101, 114,  83, 
+    116,  97, 116, 101,   0, 162, 
+      1,   0,   0,   2,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  21, 
+      0,   0,   0, 115,  83,  97, 
+    109, 112, 108, 101, 114,   0, 
+      1,   0,   0,   0,   2,   0, 
       0,   0,  21,   0,   0,   0, 
-    115,  83,  97, 109, 112, 108, 
-    101, 114,   0,   1,   0,   0, 
-      0,   2,   0,   0,   0,  21, 
-      0,   0,   0,   1,   0,   0, 
-      0,   2,   0,   0,   0,   3, 
-      0,   0,   0,   1,   0,   0, 
-      0,   2,   0,   0,   0,   3, 
-      0,   0,   0, 115,  77,  97, 
-    115, 107,  83,  97, 109, 112, 
-    108, 101, 114,   0,   1,   0, 
-      0,   0,   2,   0,   0,   0, 
-     21,   0,   0,   0,   1,   0, 
-      0,   0,   2,   0,   0,   0, 
-      3,   0,   0,   0,   1,   0, 
-      0,   0,   2,   0,   0,   0, 
-      3,   0,   0,   0, 115,  83, 
-    104,  97, 100, 111, 119,  83, 
+      1,   0,   0,   0,   2,   0, 
+      0,   0,   3,   0,   0,   0, 
+      1,   0,   0,   0,   2,   0, 
+      0,   0,   3,   0,   0,   0, 
+    115,  77,  97, 115, 107,  83, 
      97, 109, 112, 108, 101, 114, 
       0,   1,   0,   0,   0,   2, 
       0,   0,   0,  21,   0,   0, 
       0,   1,   0,   0,   0,   2, 
-      0,   0,   0,   4,   0,   0, 
+      0,   0,   0,   3,   0,   0, 
       0,   1,   0,   0,   0,   2, 
-      0,   0,   0,   4,   0,   0, 
-      0,   4,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,  82,  97, 115, 116, 101, 
-    114, 105, 122, 101, 114,  83, 
-    116,  97, 116, 101,   0, 171, 
-      1,   0,   0,   2,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   4, 
-      0,   0,   0,  84, 101, 120, 
-    116, 117, 114, 101,  82,  97, 
-    115, 116,   0,   1,   0,   0, 
-      0,   2,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
+      0,   0,   0,   3,   0,   0, 
+      0, 115,  83, 104,  97, 100, 
+    111, 119,  83,  97, 109, 112, 
+    108, 101, 114,   0,   1,   0, 
+      0,   0,   2,   0,   0,   0, 
+     21,   0,   0,   0,   1,   0, 
+      0,   0,   2,   0,   0,   0, 
+      4,   0,   0,   0,   1,   0, 
+      0,   0,   2,   0,   0,   0, 
+      4,   0,   0,   0,   4,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,  82,  97, 
+    115, 116, 101, 114, 105, 122, 
+    101, 114,  83, 116,  97, 116, 
+    101,   0, 128,   2,   0,   0, 
+      2,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   4,   0,   0,   0, 
+     84, 101, 120, 116, 117, 114, 
+    101,  82,  97, 115, 116,   0, 
+      1,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   2,   0, 
+      0,   0,   1,   0,   0,   0, 
+     66, 108, 101, 110, 100,  83, 
+    116,  97, 116, 101,   0, 208, 
+      2,   0,   0,   2,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   2, 
+      0,   0,   0,  83, 104,  97, 
+    100, 111, 119,  66, 108, 101, 
+    110, 100,  72,   0,   1,   0, 
+      0,   0,   2,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   3,   0,   0,   0, 
+     15,   0,   0,   0,  83, 104, 
+     97, 100, 111, 119,  66, 108, 
+    101, 110, 100,  86,   0,   1, 
+      0,   0,   0,   2,   0,   0, 
+      0,   1,   0,   0,   0,   1, 
+      0,   0,   0,   2,   0,   0, 
+      0,   2,   0,   0,   0,   1, 
+      0,   0,   0,   2,   0,   0, 
+      0,   6,   0,   0,   0,   1, 
+      0,   0,   0,   2,   0,   0, 
+      0,   1,   0,   0,   0,   1, 
+      0,   0,   0,   2,   0,   0, 
       0,   2,   0,   0,   0,   1, 
-      0,   0,   0,  66, 108, 101, 
-    110, 100,  83, 116,  97, 116, 
-    101,   0, 251,   1,   0,   0, 
-      2,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   2,   0,   0, 
+      0,   6,   0,   0,   0,   1, 
+      0,   0,   0,   2,   0,   0, 
+      0,   1,   0,   0,   0,   1, 
+      0,   0,   0,   3,   0,   0, 
+      0,  15,   0,   0,   0,  83, 
+     97, 109, 112, 108, 101,  84, 
+    101, 120, 116, 117, 114, 101, 
+      0,  80,  48,   0,  36,   4, 
+      0,   0,  68,  88,  66,  67, 
+    116, 139,  68,  62,  73, 113, 
+     92,   4,  72,  76, 225, 161, 
+     30, 132, 222, 233,   1,   0, 
+      0,   0,  36,   4,   0,   0, 
+      6,   0,   0,   0,  56,   0, 
+      0,   0, 248,   0,   0,   0, 
+    244,   1,   0,   0, 112,   2, 
+      0,   0, 128,   3,   0,   0, 
+    180,   3,   0,   0,  65, 111, 
+    110,  57, 184,   0,   0,   0, 
+    184,   0,   0,   0,   0,   2, 
+    254, 255, 132,   0,   0,   0, 
+     52,   0,   0,   0,   1,   0, 
+     36,   0,   0,   0,  48,   0, 
+      0,   0,  48,   0,   0,   0, 
+     36,   0,   1,   0,  48,   0, 
+      0,   0,   0,   0,   3,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   2, 
+    254, 255,  81,   0,   0,   5, 
+      4,   0,  15, 160,   0,   0, 
+      0,   0,   0,   0, 128,  63, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  31,   0,   0,   2, 
+      5,   0,   0, 128,   0,   0, 
+     15, 144,   4,   0,   0,   4, 
+      0,   0,   3, 224,   0,   0, 
+    228, 144,   2,   0, 238, 160, 
+      2,   0, 228, 160,   4,   0, 
+      0,   4,   0,   0,  12, 224, 
+      0,   0,  20, 144,   3,   0, 
+    180, 160,   3,   0,  20, 160, 
+      4,   0,   0,   4,   0,   0, 
+      3, 128,   0,   0, 228, 144, 
+      1,   0, 238, 160,   1,   0, 
+    228, 160,   2,   0,   0,   3, 
+      0,   0,   3, 192,   0,   0, 
+    228, 128,   0,   0, 228, 160, 
+      1,   0,   0,   2,   0,   0, 
+     12, 192,   4,   0,  68, 160, 
+    255, 255,   0,   0,  83,  72, 
+     68,  82, 244,   0,   0,   0, 
+     64,   0,   1,   0,  61,   0, 
+      0,   0,  89,   0,   0,   4, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+     95,   0,   0,   3,  50,  16, 
+     16,   0,   0,   0,   0,   0, 
+    103,   0,   0,   4, 242,  32, 
+     16,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0, 101,   0, 
+      0,   3,  50,  32,  16,   0, 
+      1,   0,   0,   0, 101,   0, 
+      0,   3, 194,  32,  16,   0, 
+      1,   0,   0,   0,  50,   0, 
+      0,  11,  50,  32,  16,   0, 
+      0,   0,   0,   0,  70,  16, 
+     16,   0,   0,   0,   0,   0, 
+    230, 138,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     70, 128,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     54,   0,   0,   8, 194,  32, 
+     16,   0,   0,   0,   0,   0, 
+      2,  64,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    128,  63,  50,   0,   0,  11, 
+     50,  32,  16,   0,   1,   0, 
+      0,   0,  70,  16,  16,   0, 
+      0,   0,   0,   0, 230, 138, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  70, 128, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  50,   0, 
+      0,  11, 194,  32,  16,   0, 
+      1,   0,   0,   0,   6,  20, 
+     16,   0,   0,   0,   0,   0, 
+    166, 142,  32,   0,   0,   0, 
       0,   0,   2,   0,   0,   0, 
-     83, 104,  97, 100, 111, 119, 
-     66, 108, 101, 110, 100,  72, 
-      0,   1,   0,   0,   0,   2, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,   3, 
-      0,   0,   0,  15,   0,   0, 
-      0,  83, 104,  97, 100, 111, 
-    119,  66, 108, 101, 110, 100, 
-     86,   0,   1,   0,   0,   0, 
-      2,   0,   0,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-      2,   0,   0,   0,   2,   0, 
-      0,   0,   1,   0,   0,   0, 
-      2,   0,   0,   0,   6,   0, 
+      6, 132,  32,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
+     62,   0,   0,   1,  83,  84, 
+     65,  84, 116,   0,   0,   0, 
+      5,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  82,  68,  69,  70, 
+      8,   1,   0,   0,   1,   0, 
+      0,   0,  64,   0,   0,   0, 
+      1,   0,   0,   0,  28,   0, 
+      0,   0,   0,   4, 254, 255, 
+      0,   1,   0,   0, 212,   0, 
+      0,   0,  60,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
-      2,   0,   0,   0,   1,   0, 
-      0,   0,   1,   0,   0,   0, 
-      2,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,  99,  98, 
+     48,   0,  60,   0,   0,   0, 
+      3,   0,   0,   0,  88,   0, 
+      0,   0,  48,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 160,   0,   0,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    172,   0,   0,   0,   0,   0, 
+      0,   0, 188,   0,   0,   0, 
+     16,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    172,   0,   0,   0,   0,   0, 
+      0,   0, 198,   0,   0,   0, 
+     32,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    172,   0,   0,   0,   0,   0, 
+      0,   0,  81, 117,  97, 100, 
+     68, 101, 115,  99,   0, 171, 
+    171, 171,   1,   0,   3,   0, 
+      1,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     84, 101, 120,  67, 111, 111, 
+    114, 100, 115,   0,  77,  97, 
+    115, 107,  84, 101, 120,  67, 
+    111, 111, 114, 100, 115,   0, 
+     77, 105,  99, 114, 111, 115, 
+    111, 102, 116,  32,  40,  82, 
+     41,  32,  72,  76,  83,  76, 
+     32,  83, 104,  97, 100, 101, 
+    114,  32,  67, 111, 109, 112, 
+    105, 108, 101, 114,  32,  57, 
+     46,  50,  57,  46,  57,  53, 
+     50,  46,  51,  49,  49,  49, 
+      0, 171, 171, 171,  73,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,   7,   3, 
+      0,   0,  80,  79,  83,  73, 
+     84,  73,  79,  78,   0, 171, 
+    171, 171,  79,  83,  71,  78, 
+    104,   0,   0,   0,   3,   0, 
+      0,   0,   8,   0,   0,   0, 
+     80,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
-      2,   0,   0,   0,   6,   0, 
-      0,   0,   1,   0,   0,   0, 
-      2,   0,   0,   0,   1,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,  15,   0,   0,   0, 
+     92,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,   3,  12,   0,   0, 
+     92,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,  12,   3,   0,   0, 
+     83,  86,  95,  80, 111, 115, 
+    105, 116, 105, 111, 110,   0, 
+     84,  69,  88,  67,  79,  79, 
+     82,  68,   0, 171, 171, 171, 
+    154,   3,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
-      3,   0,   0,   0,  15,   0, 
-      0,   0,  83,  97, 109, 112, 
-    108, 101,  84, 101, 120, 116, 
-    117, 114, 101,   0,  80,  48, 
-      0,  36,   4,   0,   0,  68, 
-     88,  66,  67, 116, 139,  68, 
-     62,  73, 113,  92,   4,  72, 
-     76, 225, 161,  30, 132, 222, 
-    233,   1,   0,   0,   0,  36, 
-      4,   0,   0,   6,   0,   0, 
-      0,  56,   0,   0,   0, 248, 
-      0,   0,   0, 244,   1,   0, 
-      0, 112,   2,   0,   0, 128, 
-      3,   0,   0, 180,   3,   0, 
-      0,  65, 111, 110,  57, 184, 
-      0,   0,   0, 184,   0,   0, 
-      0,   0,   2, 254, 255, 132, 
-      0,   0,   0,  52,   0,   0, 
-      0,   1,   0,  36,   0,   0, 
-      0,  48,   0,   0,   0,  48, 
-      0,   0,   0,  36,   0,   1, 
-      0,  48,   0,   0,   0,   0, 
-      0,   3,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   2, 254, 255,  81, 
-      0,   0,   5,   4,   0,  15, 
-    160,   0,   0,   0,   0,   0, 
-      0, 128,  63,   0,   0,   0, 
-      0,   0,   0,   0,   0,  31, 
-      0,   0,   2,   5,   0,   0, 
-    128,   0,   0,  15, 144,   4, 
-      0,   0,   4,   0,   0,   3, 
-    224,   0,   0, 228, 144,   2, 
-      0, 238, 160,   2,   0, 228, 
-    160,   4,   0,   0,   4,   0, 
-      0,  12, 224,   0,   0,  20, 
-    144,   3,   0, 180, 160,   3, 
-      0,  20, 160,   4,   0,   0, 
+      2,   0,   0,   0,   0,   0, 
+      0,   0, 212,   2,   0,   0, 
+     68,  88,  66,  67,  22, 206, 
+     82, 103, 196, 235,  84, 233, 
+    156,  39, 210, 152,  32, 145, 
+    169, 162,   1,   0,   0,   0, 
+    212,   2,   0,   0,   6,   0, 
+      0,   0,  56,   0,   0,   0, 
+    164,   0,   0,   0,  16,   1, 
+      0,   0, 140,   1,   0,   0, 
+     48,   2,   0,   0, 160,   2, 
+      0,   0,  65, 111, 110,  57, 
+    100,   0,   0,   0, 100,   0, 
+      0,   0,   0,   2, 255, 255, 
+     60,   0,   0,   0,  40,   0, 
+      0,   0,   0,   0,  40,   0, 
+      0,   0,  40,   0,   0,   0, 
+     40,   0,   1,   0,  36,   0, 
+      0,   0,  40,   0,   0,   0, 
+      0,   0,   1,   2, 255, 255, 
+     31,   0,   0,   2,   0,   0, 
+      0, 128,   0,   0,  15, 176, 
+     31,   0,   0,   2,   0,   0, 
+      0, 144,   0,   8,  15, 160, 
+     66,   0,   0,   3,   0,   0, 
+     15, 128,   0,   0, 228, 176, 
+      0,   8, 228, 160,   1,   0, 
+      0,   2,   0,   8,  15, 128, 
+      0,   0, 228, 128, 255, 255, 
+      0,   0,  83,  72,  68,  82, 
+    100,   0,   0,   0,  64,   0, 
+      0,   0,  25,   0,   0,   0, 
+     90,   0,   0,   3,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     88,  24,   0,   4,   0, 112, 
+     16,   0,   0,   0,   0,   0, 
+     85,  85,   0,   0,  98,  16, 
+      0,   3,  50,  16,  16,   0, 
+      1,   0,   0,   0, 101,   0, 
+      0,   3, 242,  32,  16,   0, 
+      0,   0,   0,   0,  69,   0, 
+      0,   9, 242,  32,  16,   0, 
+      0,   0,   0,   0,  70,  16, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  62,   0, 
+      0,   1,  83,  84,  65,  84, 
+    116,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     82,  68,  69,  70, 156,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   2,   0, 
+      0,   0,  28,   0,   0,   0, 
+      0,   4, 255, 255,   0,   1, 
+      0,   0, 105,   0,   0,   0, 
+     92,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0, 101,   0,   0,   0, 
+      2,   0,   0,   0,   5,   0, 
+      0,   0,   4,   0,   0,   0, 
+    255, 255, 255, 255,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+     12,   0,   0,   0, 115,  83, 
+     97, 109, 112, 108, 101, 114, 
+      0, 116, 101, 120,   0,  77, 
+    105,  99, 114, 111, 115, 111, 
+    102, 116,  32,  40,  82,  41, 
+     32,  72,  76,  83,  76,  32, 
+     83, 104,  97, 100, 101, 114, 
+     32,  67, 111, 109, 112, 105, 
+    108, 101, 114,  32,  57,  46, 
+     50,  57,  46,  57,  53,  50, 
+     46,  51,  49,  49,  49,   0, 
+    171, 171,  73,  83,  71,  78, 
+    104,   0,   0,   0,   3,   0, 
+      0,   0,   8,   0,   0,   0, 
+     80,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,  15,   0,   0,   0, 
+     92,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,   3,   3,   0,   0, 
+     92,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,  12,   0,   0,   0, 
+     83,  86,  95,  80, 111, 115, 
+    105, 116, 105, 111, 110,   0, 
+     84,  69,  88,  67,  79,  79, 
+     82,  68,   0, 171, 171, 171, 
+     79,  83,  71,  78,  44,   0, 
+      0,   0,   1,   0,   0,   0, 
+      8,   0,   0,   0,  32,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  83,  86, 
+     95,  84,  97, 114, 103, 101, 
+    116,   0, 171, 171, 214,   7, 
+      0,   0,   0,   0,   0,   0, 
+     83,  97, 109, 112, 108, 101, 
+     82,  97, 100, 105,  97, 108, 
+     71, 114,  97, 100, 105, 101, 
+    110, 116,   0,   4,   7,   0, 
+      0,  68,  88,  66,  67, 171, 
+      7,  14, 215, 173,  41,  24, 
+    247, 237,   1,  38,  39, 209, 
+    221, 241, 232,   1,   0,   0, 
+      0,   4,   7,   0,   0,   6, 
+      0,   0,   0,  56,   0,   0, 
+      0, 148,   1,   0,   0, 104, 
+      3,   0,   0, 228,   3,   0, 
+      0,  96,   6,   0,   0, 148, 
+      6,   0,   0,  65, 111, 110, 
+     57,  84,   1,   0,   0,  84, 
+      1,   0,   0,   0,   2, 254, 
+    255, 252,   0,   0,   0,  88, 
+      0,   0,   0,   4,   0,  36, 
+      0,   0,   0,  84,   0,   0, 
+      0,  84,   0,   0,   0,  36, 
+      0,   1,   0,  84,   0,   0, 
+      0,   0,   0,   1,   0,   1, 
+      0,   0,   0,   0,   0,   0, 
+      0,   2,   0,   1,   0,   2, 
+      0,   0,   0,   0,   0,   1, 
+      0,   0,   0,   2,   0,   3, 
+      0,   0,   0,   0,   0,   1, 
+      0,   3,   0,   1,   0,   5, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   1,   2, 254, 
+    255,  81,   0,   0,   5,   6, 
+      0,  15, 160,   0,   0, 128, 
+     63,   0,   0,   0,  63,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  31,   0,   0,   2,   5, 
+      0,   0, 128,   0,   0,  15, 
+    144,   4,   0,   0,   4,   0, 
+      0,   3, 224,   0,   0, 228, 
+    144,   2,   0, 238, 160,   2, 
+      0, 228, 160,   4,   0,   0, 
       4,   0,   0,   3, 128,   0, 
       0, 228, 144,   1,   0, 238, 
     160,   1,   0, 228, 160,   2, 
-      0,   0,   3,   0,   0,   3, 
-    192,   0,   0, 228, 128,   0, 
-      0, 228, 160,   1,   0,   0, 
-      2,   0,   0,  12, 192,   4, 
-      0,  68, 160, 255, 255,   0, 
-      0,  83,  72,  68,  82, 244, 
-      0,   0,   0,  64,   0,   1, 
-      0,  61,   0,   0,   0,  89, 
+      0,   0,   3,   0,   0,   4, 
+    128,   0,   0,   0, 128,   6, 
+      0,   0, 160,   5,   0,   0, 
+      3,   0,   0,   4, 128,   0, 
+      0, 170, 128,   5,   0,   0, 
+    160,   5,   0,   0,   3,   1, 
+      0,   1, 128,   0,   0, 170, 
+    128,   6,   0,  85, 160,   2, 
+      0,   0,   3,   0,   0,   4, 
+    128,   0,   0,  85, 129,   6, 
+      0,   0, 160,   2,   0,   0, 
+      3,   0,   0,   3, 192,   0, 
+      0, 228, 128,   0,   0, 228, 
+    160,   5,   0,   0,   3,   0, 
+      0,   1, 128,   0,   0, 170, 
+    128,   5,   0,  85, 160,   5, 
+      0,   0,   3,   1,   0,   2, 
+    128,   0,   0,   0, 128,   6, 
+      0,  85, 160,   1,   0,   0, 
+      2,   1,   0,   4, 128,   6, 
+      0,   0, 160,   8,   0,   0, 
+      3,   0,   0,   8, 224,   1, 
+      0, 228, 128,   3,   0, 228, 
+    160,   8,   0,   0,   3,   0, 
+      0,   4, 224,   1,   0, 228, 
+    128,   4,   0, 228, 160,   1, 
+      0,   0,   2,   0,   0,  12, 
+    192,   6,   0,  36, 160, 255, 
+    255,   0,   0,  83,  72,  68, 
+     82, 204,   1,   0,   0,  64, 
+      0,   1,   0, 115,   0,   0, 
+      0,  89,   0,   0,   4,  70, 
+    142,  32,   0,   0,   0,   0, 
+      0,   3,   0,   0,   0,  89, 
       0,   0,   4,  70, 142,  32, 
-      0,   0,   0,   0,   0,   3, 
+      0,   1,   0,   0,   0,   4, 
       0,   0,   0,  95,   0,   0, 
       3,  50,  16,  16,   0,   0, 
       0,   0,   0, 103,   0,   0, 
       4, 242,  32,  16,   0,   0, 
       0,   0,   0,   1,   0,   0, 
       0, 101,   0,   0,   3,  50, 
      32,  16,   0,   1,   0,   0, 
       0, 101,   0,   0,   3, 194, 
      32,  16,   0,   1,   0,   0, 
-      0,  50,   0,   0,  11,  50, 
-     32,  16,   0,   0,   0,   0, 
-      0,  70,  16,  16,   0,   0, 
-      0,   0,   0, 230, 138,  32, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  70, 128,  32, 
-      0,   0,   0,   0,   0,   0, 
+      0, 104,   0,   0,   2,   2, 
       0,   0,   0,  54,   0,   0, 
       8, 194,  32,  16,   0,   0, 
       0,   0,   0,   2,  64,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0, 128,  63,  50, 
-      0,   0,  11,  50,  32,  16, 
-      0,   1,   0,   0,   0,  70, 
+      0,   0,  11,  50,   0,  16, 
+      0,   0,   0,   0,   0,  70, 
      16,  16,   0,   0,   0,   0, 
       0, 230, 138,  32,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,  70, 128,  32,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,  50,   0,   0,  11, 194, 
+      0,   0,   0,   0,   0,   0, 
+      0,  54,   0,   0,   5,  50, 
+     32,  16,   0,   0,   0,   0, 
+      0,  70,   0,  16,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      7,  18,   0,  16,   0,   0, 
+      0,   0,   0,  10,   0,  16, 
+      0,   0,   0,   0,   0,   1, 
+     64,   0,   0,   0,   0, 128, 
+     63,   0,   0,   0,   8,  34, 
+      0,  16,   0,   0,   0,   0, 
+      0,  26,   0,  16, 128,  65, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,  64,   0,   0,   0, 
+      0, 128,  63,  56,   0,   0, 
+      8,  50,   0,  16,   0,   0, 
+      0,   0,   0,  70,   0,  16, 
+      0,   0,   0,   0,   0,  70, 
+    128,  32,   0,   1,   0,   0, 
+      0,   3,   0,   0,   0,  56, 
+      0,   0,  10,  50,   0,  16, 
+      0,   1,   0,   0,   0,  70, 
+      0,  16,   0,   0,   0,   0, 
+      0,   2,  64,   0,   0,   0, 
+      0,   0,  63,   0,   0,   0, 
+     63,   0,   0,   0,   0,   0, 
+      0,   0,   0,  54,   0,   0, 
+      5,  66,   0,  16,   0,   1, 
+      0,   0,   0,   1,  64,   0, 
+      0,   0,   0, 128,  63,  16, 
+      0,   0,   8,  66,  32,  16, 
+      0,   1,   0,   0,   0,  70, 
+      2,  16,   0,   1,   0,   0, 
+      0,  70, 130,  32,   0,   1, 
+      0,   0,   0,   0,   0,   0, 
+      0,  16,   0,   0,   8, 130, 
      32,  16,   0,   1,   0,   0, 
-      0,   6,  20,  16,   0,   0, 
-      0,   0,   0, 166, 142,  32, 
-      0,   0,   0,   0,   0,   2, 
-      0,   0,   0,   6, 132,  32, 
-      0,   0,   0,   0,   0,   2, 
-      0,   0,   0,  62,   0,   0, 
-      1,  83,  84,  65,  84, 116, 
-      0,   0,   0,   5,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   4,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      0,  70,   2,  16,   0,   1, 
+      0,   0,   0,  70, 130,  32, 
+      0,   1,   0,   0,   0,   1, 
+      0,   0,   0,  50,   0,   0, 
+     11,  50,  32,  16,   0,   1, 
+      0,   0,   0,  70,  16,  16, 
+      0,   0,   0,   0,   0, 230, 
+    138,  32,   0,   0,   0,   0, 
+      0,   2,   0,   0,   0,  70, 
+    128,  32,   0,   0,   0,   0, 
+      0,   2,   0,   0,   0,  62, 
+      0,   0,   1,  83,  84,  65, 
+     84, 116,   0,   0,   0,  12, 
+      0,   0,   0,   2,   0,   0, 
+      0,   0,   0,   0,   0,   4, 
+      0,   0,   0,   6,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   1,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   3,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  82,  68,  69,  70, 116, 
+      2,   0,   0,   2,   0,   0, 
+      0, 100,   0,   0,   0,   2, 
+      0,   0,   0,  28,   0,   0, 
+      0,   0,   4, 254, 255,   0, 
+      1,   0,   0,  67,   2,   0, 
+      0,  92,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,  82, 
-     68,  69,  70,   8,   1,   0, 
-      0,   1,   0,   0,   0,  64, 
-      0,   0,   0,   1,   0,   0, 
-      0,  28,   0,   0,   0,   0, 
-      4, 254, 255,   0,   1,   0, 
-      0, 212,   0,   0,   0,  60, 
-      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,  96,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,  99,  98,  48,   0,  60, 
-      0,   0,   0,   3,   0,   0, 
-      0,  88,   0,   0,   0,  48, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0, 160, 
-      0,   0,   0,   0,   0,   0, 
-      0,  16,   0,   0,   0,   2, 
-      0,   0,   0, 172,   0,   0, 
-      0,   0,   0,   0,   0, 188, 
+      0,   0,   0,   1,   0,   0, 
+      0,   0,   0,   0,   0,  99, 
+     98,  48,   0,  99,  98,  50, 
+      0,  92,   0,   0,   0,   3, 
+      0,   0,   0, 148,   0,   0, 
+      0,  48,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  96,   0,   0,   0,   7, 
+      0,   0,   0,  16,   1,   0, 
+      0, 112,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0, 220,   0,   0,   0,   0, 
+      0,   0,   0,  16,   0,   0, 
+      0,   2,   0,   0,   0, 232, 
+      0,   0,   0,   0,   0,   0, 
+      0, 248,   0,   0,   0,  16, 
+      0,   0,   0,  16,   0,   0, 
+      0,   0,   0,   0,   0, 232, 
+      0,   0,   0,   0,   0,   0, 
+      0,   2,   1,   0,   0,  32, 
       0,   0,   0,  16,   0,   0, 
-      0,  16,   0,   0,   0,   2, 
-      0,   0,   0, 172,   0,   0, 
-      0,   0,   0,   0,   0, 198, 
-      0,   0,   0,  32,   0,   0, 
-      0,  16,   0,   0,   0,   2, 
-      0,   0,   0, 172,   0,   0, 
-      0,   0,   0,   0,   0,  81, 
-    117,  97, 100,  68, 101, 115, 
-     99,   0, 171, 171, 171,   1, 
-      0,   3,   0,   1,   0,   4, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  84, 101, 120, 
-     67, 111, 111, 114, 100, 115, 
-      0,  77,  97, 115, 107,  84, 
+      0,   2,   0,   0,   0, 232, 
+      0,   0,   0,   0,   0,   0, 
+      0,  81, 117,  97, 100,  68, 
+    101, 115,  99,   0, 171, 171, 
+    171,   1,   0,   3,   0,   1, 
+      0,   4,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  84, 
     101, 120,  67, 111, 111, 114, 
-    100, 115,   0,  77, 105,  99, 
-    114, 111, 115, 111, 102, 116, 
-     32,  40,  82,  41,  32,  72, 
-     76,  83,  76,  32,  83, 104, 
-     97, 100, 101, 114,  32,  67, 
-    111, 109, 112, 105, 108, 101, 
-    114,  32,  57,  46,  50,  57, 
-     46,  57,  53,  50,  46,  51, 
-     49,  49,  49,   0, 171, 171, 
-    171,  73,  83,  71,  78,  44, 
+    100, 115,   0,  77,  97, 115, 
+    107,  84, 101, 120,  67, 111, 
+    111, 114, 100, 115,   0, 184, 
+      1,   0,   0,   0,   0,   0, 
+      0,  44,   0,   0,   0,   2, 
+      0,   0,   0, 208,   1,   0, 
+      0,   0,   0,   0,   0, 224, 
+      1,   0,   0,  48,   0,   0, 
+      0,   8,   0,   0,   0,   2, 
+      0,   0,   0, 236,   1,   0, 
+      0,   0,   0,   0,   0, 252, 
+      1,   0,   0,  64,   0,   0, 
+      0,  12,   0,   0,   0,   0, 
+      0,   0,   0,   4,   2,   0, 
+      0,   0,   0,   0,   0,  20, 
+      2,   0,   0,  80,   0,   0, 
+      0,   8,   0,   0,   0,   0, 
+      0,   0,   0, 236,   1,   0, 
+      0,   0,   0,   0,   0,  28, 
+      2,   0,   0,  88,   0,   0, 
+      0,   4,   0,   0,   0,   0, 
+      0,   0,   0,  32,   2,   0, 
+      0,   0,   0,   0,   0,  48, 
+      2,   0,   0,  92,   0,   0, 
+      0,   4,   0,   0,   0,   0, 
+      0,   0,   0,  32,   2,   0, 
+      0,   0,   0,   0,   0,  56, 
+      2,   0,   0,  96,   0,   0, 
+      0,   4,   0,   0,   0,   0, 
+      0,   0,   0,  32,   2,   0, 
+      0,   0,   0,   0,   0,  68, 
+    101, 118, 105,  99, 101,  83, 
+    112,  97,  99, 101,  84, 111, 
+     85, 115, 101, 114,  83, 112, 
+     97,  99, 101,   0, 171,   3, 
+      0,   3,   0,   3,   0,   3, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0, 100, 105, 109, 
+    101, 110, 115, 105, 111, 110, 
+    115,   0, 171,   1,   0,   3, 
+      0,   1,   0,   2,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0, 100, 105, 102, 102,   0, 
+    171, 171, 171,   1,   0,   3, 
+      0,   1,   0,   3,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  99, 101, 110, 116, 101, 
+    114,  49,   0,  65,   0, 171, 
+    171,   0,   0,   3,   0,   1, 
+      0,   1,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0, 114, 
+     97, 100, 105, 117, 115,  49, 
+      0, 115, 113,  95, 114,  97, 
+    100, 105, 117, 115,  49,   0, 
+     77, 105,  99, 114, 111, 115, 
+    111, 102, 116,  32,  40,  82, 
+     41,  32,  72,  76,  83,  76, 
+     32,  83, 104,  97, 100, 101, 
+    114,  32,  67, 111, 109, 112, 
+    105, 108, 101, 114,  32,  57, 
+     46,  50,  57,  46,  57,  53, 
+     50,  46,  51,  49,  49,  49, 
+      0,  73,  83,  71,  78,  44, 
       0,   0,   0,   1,   0,   0, 
       0,   8,   0,   0,   0,  32, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   3, 
       0,   0,   0,   0,   0,   0, 
       0,   7,   3,   0,   0,  80, 
      79,  83,  73,  84,  73,  79, 
      78,   0, 171, 171, 171,  79, 
@@ -1405,455 +2392,399 @@ const BYTE d2deffect[] =
      12,   0,   0,  92,   0,   0, 
       0,   1,   0,   0,   0,   0, 
       0,   0,   0,   3,   0,   0, 
       0,   1,   0,   0,   0,  12, 
       3,   0,   0,  83,  86,  95, 
      80, 111, 115, 105, 116, 105, 
     111, 110,   0,  84,  69,  88, 
      67,  79,  79,  82,  68,   0, 
-    171, 171, 171, 197,   2,   0, 
+    171, 171, 171, 203,  10,   0, 
       0,   0,   0,   0,   0,   1, 
       0,   0,   0,   2,   0,   0, 
-      0,   0,   0,   0,   0, 212, 
-      2,   0,   0,  68,  88,  66, 
-     67,  22, 206,  82, 103, 196, 
-    235,  84, 233, 156,  39, 210, 
-    152,  32, 145, 169, 162,   1, 
-      0,   0,   0, 212,   2,   0, 
+      0,   0,   0,   0,   0, 176, 
+      9,   0,   0,  68,  88,  66, 
+     67, 240, 161, 162, 174,  38, 
+    162, 195, 139, 184, 115, 158, 
+    154, 113,  22, 188,  37,   1, 
+      0,   0,   0, 176,   9,   0, 
       0,   6,   0,   0,   0,  56, 
-      0,   0,   0, 164,   0,   0, 
-      0,  16,   1,   0,   0, 140, 
-      1,   0,   0,  48,   2,   0, 
-      0, 160,   2,   0,   0,  65, 
-    111, 110,  57, 100,   0,   0, 
-      0, 100,   0,   0,   0,   0, 
-      2, 255, 255,  60,   0,   0, 
-      0,  40,   0,   0,   0,   0, 
-      0,  40,   0,   0,   0,  40, 
-      0,   0,   0,  40,   0,   1, 
-      0,  36,   0,   0,   0,  40, 
+      0,   0,   0, 112,   2,   0, 
+      0,  44,   6,   0,   0, 168, 
+      6,   0,   0,  12,   9,   0, 
+      0, 124,   9,   0,   0,  65, 
+    111, 110,  57,  48,   2,   0, 
+      0,  48,   2,   0,   0,   0, 
+      2, 255, 255, 248,   1,   0, 
+      0,  56,   0,   0,   0,   1, 
+      0,  44,   0,   0,   0,  56, 
+      0,   0,   0,  56,   0,   2, 
+      0,  36,   0,   0,   0,  56, 
       0,   0,   0,   0,   0,   1, 
-      2, 255, 255,  31,   0,   0, 
-      2,   0,   0,   0, 128,   0, 
-      0,  15, 176,  31,   0,   0, 
-      2,   0,   0,   0, 144,   0, 
-      8,  15, 160,  66,   0,   0, 
-      3,   0,   0,  15, 128,   0, 
-      0, 228, 176,   0,   8, 228, 
-    160,   1,   0,   0,   2,   0, 
-      8,  15, 128,   0,   0, 228, 
-    128, 255, 255,   0,   0,  83, 
-     72,  68,  82, 100,   0,   0, 
-      0,  64,   0,   0,   0,  25, 
-      0,   0,   0,  90,   0,   0, 
-      3,   0,  96,  16,   0,   0, 
-      0,   0,   0,  88,  24,   0, 
-      4,   0, 112,  16,   0,   0, 
+      1,   1,   0,   0,   0,   4, 
+      0,   3,   0,   0,   0,   0, 
+      0,   0,   0,   1,   2, 255, 
+    255,  81,   0,   0,   5,   3, 
+      0,  15, 160,   0,   0,   0, 
+     63,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  81,   0,   0,   5,   4, 
+      0,  15, 160,   0,   0, 128, 
+     63,   0,   0, 128, 191,   0, 
+      0,   0,   0,   0,   0,   0, 
+    128,  31,   0,   0,   2,   0, 
+      0,   0, 128,   0,   0,  15, 
+    176,  31,   0,   0,   2,   0, 
+      0,   0, 144,   0,   8,  15, 
+    160,  31,   0,   0,   2,   0, 
+      0,   0, 144,   1,   8,  15, 
+    160,   2,   0,   0,   3,   0, 
+      0,   3, 128,   0,   0, 235, 
+    176,   1,   0, 228, 161,  90, 
+      0,   0,   4,   0,   0,   8, 
+    128,   0,   0, 228, 128,   0, 
+      0, 228, 128,   2,   0,   0, 
+    161,   5,   0,   0,   3,   0, 
+      0,   8, 128,   0,   0, 255, 
+    128,   1,   0, 170, 160,   1, 
+      0,   0,   2,   0,   0,   4, 
+    128,   1,   0, 255, 160,   8, 
+      0,   0,   3,   0,   0,   1, 
+    128,   0,   0, 228, 128,   0, 
+      0, 228, 160,   4,   0,   0, 
+      4,   0,   0,   2, 128,   0, 
+      0,   0, 128,   0,   0,   0, 
+    128,   0,   0, 255, 129,  35, 
+      0,   0,   2,   0,   0,   4, 
+    128,   0,   0,  85, 128,   7, 
+      0,   0,   2,   0,   0,   4, 
+    128,   0,   0, 170, 128,   6, 
+      0,   0,   2,   1,   0,   1, 
+    128,   0,   0, 170, 128,   1, 
+      0,   0,   2,   1,   0,   6, 
+    128,   1,   0,   0, 129,   2, 
+      0,   0,   3,   0,   0,  13, 
+    128,   0,   0,   0, 128,   1, 
+      0, 148, 128,   6,   0,   0, 
+      2,   1,   0,   1, 128,   1, 
+      0, 170, 160,   5,   0,   0, 
+      3,   0,   0,  13, 128,   0, 
+      0, 228, 128,   1,   0,   0, 
+    128,   1,   0,   0,   2,   1, 
+      0,   8, 128,   1,   0, 255, 
+    160,   4,   0,   0,   4,   1, 
+      0,   7, 128,   0,   0, 248, 
+    128,   0,   0, 170, 160,   1, 
+      0, 255, 128,  88,   0,   0, 
+      4,   2,   0,   1, 128,   1, 
+      0,   0, 128,   0,   0,   0, 
+    128,   0,   0, 255, 128,  88, 
+      0,   0,   4,   0,   0,  13, 
+    128,   1,   0, 148, 128,   4, 
+      0,  68, 160,   4,   0, 230, 
+    160,   1,   0,   0,   2,   2, 
+      0,   2, 128,   3,   0,   0, 
+    160,  66,   0,   0,   3,   1, 
+      0,  15, 128,   0,   0, 228, 
+    176,   1,   8, 228, 160,  66, 
+      0,   0,   3,   2,   0,  15, 
+    128,   2,   0, 228, 128,   0, 
+      8, 228, 160,   5,   0,   0, 
+      3,   1,   0,  15, 128,   1, 
+      0, 255, 128,   2,   0, 228, 
+    128,   2,   0,   0,   3,   0, 
+      0,   8, 128,   0,   0, 255, 
+    128,   0,   0,   0, 128,  88, 
+      0,   0,   4,   0,   0,   1, 
+    128,   0,   0, 255, 128,   0, 
+      0,   0, 128,   0,   0, 170, 
+    128,  88,   0,   0,   4,   1, 
+      0,  15, 128,   0,   0,   0, 
+    129,   4,   0, 170, 160,   1, 
+      0, 228, 128,  88,   0,   0, 
+      4,   0,   0,  15, 128,   0, 
+      0,  85, 128,   1,   0, 228, 
+    128,   4,   0, 170, 160,   1, 
+      0,   0,   2,   0,   8,  15, 
+    128,   0,   0, 228, 128, 255, 
+    255,   0,   0,  83,  72,  68, 
+     82, 180,   3,   0,   0,  64, 
+      0,   0,   0, 237,   0,   0, 
+      0,  89,   0,   0,   4,  70, 
+    142,  32,   0,   0,   0,   0, 
+      0,   7,   0,   0,   0,  90, 
+      0,   0,   3,   0,  96,  16, 
+      0,   0,   0,   0,   0,  90, 
+      0,   0,   3,   0,  96,  16, 
+      0,   1,   0,   0,   0,  88, 
+     24,   0,   4,   0, 112,  16, 
+      0,   0,   0,   0,   0,  85, 
+     85,   0,   0,  88,  24,   0, 
+      4,   0, 112,  16,   0,   1, 
       0,   0,   0,  85,  85,   0, 
       0,  98,  16,   0,   3,  50, 
      16,  16,   0,   1,   0,   0, 
+      0,  98,  16,   0,   3, 194, 
+     16,  16,   0,   1,   0,   0, 
       0, 101,   0,   0,   3, 242, 
      32,  16,   0,   0,   0,   0, 
-      0,  69,   0,   0,   9, 242, 
-     32,  16,   0,   0,   0,   0, 
-      0,  70,  16,  16,   0,   1, 
-      0,   0,   0,  70, 126,  16, 
-      0,   0,   0,   0,   0,   0, 
-     96,  16,   0,   0,   0,   0, 
+      0, 104,   0,   0,   2,   3, 
+      0,   0,   0,   0,   0,   0, 
+      9,  50,   0,  16,   0,   0, 
+      0,   0,   0, 230,  26,  16, 
+      0,   1,   0,   0,   0,  70, 
+    128,  32, 128,  65,   0,   0, 
+      0,   0,   0,   0,   0,   5, 
+      0,   0,   0,  54,   0,   0, 
+      6,  66,   0,  16,   0,   0, 
+      0,   0,   0,  58, 128,  32, 
+      0,   0,   0,   0,   0,   5, 
+      0,   0,   0,  16,   0,   0, 
+      8,  66,   0,  16,   0,   0, 
+      0,   0,   0,  70,   2,  16, 
+      0,   0,   0,   0,   0,  70, 
+    130,  32,   0,   0,   0,   0, 
+      0,   4,   0,   0,   0,  15, 
+      0,   0,   7,  18,   0,  16, 
+      0,   0,   0,   0,   0,  70, 
+      0,  16,   0,   0,   0,   0, 
+      0,  70,   0,  16,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      9,  18,   0,  16,   0,   0, 
+      0,   0,   0,  10,   0,  16, 
+      0,   0,   0,   0,   0,  10, 
+    128,  32, 128,  65,   0,   0, 
+      0,   0,   0,   0,   0,   6, 
+      0,   0,   0,  56,   0,   0, 
+      8,  18,   0,  16,   0,   0, 
+      0,   0,   0,  10,   0,  16, 
+      0,   0,   0,   0,   0,  42, 
+    128,  32,   0,   0,   0,   0, 
+      0,   5,   0,   0,   0,  50, 
+      0,   0,  10,  18,   0,  16, 
+      0,   0,   0,   0,   0,  42, 
+      0,  16,   0,   0,   0,   0, 
+      0,  42,   0,  16,   0,   0, 
+      0,   0,   0,  10,   0,  16, 
+    128,  65,   0,   0,   0,   0, 
+      0,   0,   0,  49,   0,   0, 
+      7,  34,   0,  16,   0,   0, 
+      0,   0,   0,  10,   0,  16, 
+      0,   0,   0,   0,   0,   1, 
+     64,   0,   0,   0,   0,   0, 
+      0,  75,   0,   0,   6,  18, 
+      0,  16,   0,   1,   0,   0, 
+      0,  10,   0,  16, 128, 129, 
+      0,   0,   0,   0,   0,   0, 
+      0,  54,   0,   0,   6,  34, 
+      0,  16,   0,   1,   0,   0, 
+      0,  10,   0,  16, 128,  65, 
+      0,   0,   0,   1,   0,   0, 
+      0,   0,   0,   0,   7,  82, 
+      0,  16,   0,   0,   0,   0, 
+      0, 166,  10,  16,   0,   0, 
+      0,   0,   0,   6,   1,  16, 
+      0,   1,   0,   0,   0,  14, 
+      0,   0,   8,  82,   0,  16, 
+      0,   0,   0,   0,   0,   6, 
+      2,  16,   0,   0,   0,   0, 
+      0, 166, 138,  32,   0,   0, 
+      0,   0,   0,   5,   0,   0, 
+      0,  56,   0,   0,   8,  50, 
+      0,  16,   0,   1,   0,   0, 
+      0, 134,   0,  16,   0,   0, 
+      0,   0,   0, 166, 138,  32, 
+      0,   0,   0,   0,   0,   4, 
+      0,   0,   0,  29,   0,   0, 
+      9,  50,   0,  16,   0,   1, 
+      0,   0,   0,  70,   0,  16, 
+      0,   1,   0,   0,   0, 246, 
+    143,  32, 128,  65,   0,   0, 
+      0,   0,   0,   0,   0,   5, 
+      0,   0,   0,   1,   0,   0, 
+     10,  50,   0,  16,   0,   1, 
+      0,   0,   0,  70,   0,  16, 
+      0,   1,   0,   0,   0,   2, 
+     64,   0,   0,   0,   0, 128, 
+     63,   0,   0, 128,  63,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   8,  18, 
+      0,  16,   0,   0,   0,   0, 
+      0,  42,   0,  16, 128,  65, 
+      0,   0,   0,   0,   0,   0, 
+      0,  10,   0,  16,   0,   0, 
+      0,   0,   0,  50,   0,   0, 
+      9,  18,   0,  16,   0,   2, 
+      0,   0,   0,  10,   0,  16, 
+      0,   1,   0,   0,   0,  10, 
+      0,  16,   0,   0,   0,   0, 
+      0,  42,   0,  16,   0,   0, 
+      0,   0,   0,  54,   0,   0, 
+      5,  34,   0,  16,   0,   2, 
+      0,   0,   0,   1,  64,   0, 
+      0,   0,   0,   0,  63,  69, 
+      0,   0,   9, 242,   0,  16, 
+      0,   2,   0,   0,   0,  70, 
+      0,  16,   0,   2,   0,   0, 
+      0,  70, 126,  16,   0,   0, 
+      0,   0,   0,   0,  96,  16, 
+      0,   0,   0,   0,   0,  31, 
+      0,   4,   3,  26,   0,  16, 
+      0,   0,   0,   0,   0,  54, 
+      0,   0,   8, 242,  32,  16, 
+      0,   0,   0,   0,   0,   2, 
+     64,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  62,   0,   0,   1,  21, 
+      0,   0,   1,  52,   0,   0, 
+      7,  18,   0,  16,   0,   0, 
+      0,   0,   0,  26,   0,  16, 
+      0,   1,   0,   0,   0,  10, 
+      0,  16,   0,   1,   0,   0, 
+      0,  29,   0,   0,   7,  18, 
+      0,  16,   0,   0,   0,   0, 
+      0,   1,  64,   0,   0,   0, 
+      0,   0,   0,  10,   0,  16, 
+      0,   0,   0,   0,   0,  31, 
+      0,   4,   3,  10,   0,  16, 
+      0,   0,   0,   0,   0,  54, 
+      0,   0,   8, 242,  32,  16, 
+      0,   0,   0,   0,   0,   2, 
+     64,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  62,   0,   0,   1,  21, 
+      0,   0,   1,  69,   0,   0, 
+      9, 242,   0,  16,   0,   0, 
+      0,   0,   0,  70,  16,  16, 
+      0,   1,   0,   0,   0,  70, 
+    126,  16,   0,   1,   0,   0, 
+      0,   0,  96,  16,   0,   1, 
+      0,   0,   0,  56,   0,   0, 
+      7, 242,  32,  16,   0,   0, 
+      0,   0,   0, 246,  15,  16, 
+      0,   0,   0,   0,   0,  70, 
+     14,  16,   0,   2,   0,   0, 
       0,  62,   0,   0,   1,  83, 
      84,  65,  84, 116,   0,   0, 
-      0,   2,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   2,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      0,  32,   0,   0,   0,   3, 
+      0,   0,   0,   0,   0,   0, 
+      0,   3,   0,   0,   0,  16, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,   3, 
+      0,   0,   0,   2,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   2,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   4, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,  82,  68,  69, 
-     70, 156,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   2,   0,   0,   0,  28, 
+     70,  92,   2,   0,   0,   1, 
+      0,   0,   0, 224,   0,   0, 
+      0,   5,   0,   0,   0,  28, 
       0,   0,   0,   0,   4, 255, 
-    255,   0,   1,   0,   0, 105, 
-      0,   0,   0,  92,   0,   0, 
+    255,   0,   1,   0,   0,  43, 
+      2,   0,   0, 188,   0,   0, 
       0,   3,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0, 101, 
-      0,   0,   0,   2,   0,   0, 
-      0,   5,   0,   0,   0,   4, 
-      0,   0,   0, 255, 255, 255, 
-    255,   0,   0,   0,   0,   1, 
-      0,   0,   0,  12,   0,   0, 
-      0, 115,  83,  97, 109, 112, 
-    108, 101, 114,   0, 116, 101, 
-    120,   0,  77, 105,  99, 114, 
-    111, 115, 111, 102, 116,  32, 
-     40,  82,  41,  32,  72,  76, 
-     83,  76,  32,  83, 104,  97, 
-    100, 101, 114,  32,  67, 111, 
-    109, 112, 105, 108, 101, 114, 
-     32,  57,  46,  50,  57,  46, 
-     57,  53,  50,  46,  51,  49, 
-     49,  49,   0, 171, 171,  73, 
-     83,  71,  78, 104,   0,   0, 
-      0,   3,   0,   0,   0,   8, 
-      0,   0,   0,  80,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
+      0,   0,   0,   0,   0, 197, 
       0,   0,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,  15, 
-      0,   0,   0,  92,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   1,   0,   0,   0,   3, 
-      3,   0,   0,  92,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,   1, 
+      0,   0,   0,   0,   0,   0, 
+      0, 210,   0,   0,   0,   2, 
+      0,   0,   0,   5,   0,   0, 
+      0,   4,   0,   0,   0, 255, 
+    255, 255, 255,   0,   0,   0, 
       0,   1,   0,   0,   0,  12, 
-      0,   0,   0,  83,  86,  95, 
-     80, 111, 115, 105, 116, 105, 
-    111, 110,   0,  84,  69,  88, 
-     67,  79,  79,  82,  68,   0, 
-    171, 171, 171,  79,  83,  71, 
-     78,  44,   0,   0,   0,   1, 
-      0,   0,   0,   8,   0,   0, 
-      0,  32,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   3,   0,   0,   0,   0, 
-      0,   0,   0,  15,   0,   0, 
-      0,  83,  86,  95,  84,  97, 
-    114, 103, 101, 116,   0, 171, 
-    171,   1,   7,   0,   0,   0, 
-      0,   0,   0,  83,  97, 109, 
-    112, 108, 101,  77,  97, 115, 
-    107, 101, 100,  84, 101, 120, 
-    116, 117, 114, 101,   0,  36, 
-      4,   0,   0,  68,  88,  66, 
-     67, 116, 139,  68,  62,  73, 
-    113,  92,   4,  72,  76, 225, 
-    161,  30, 132, 222, 233,   1, 
-      0,   0,   0,  36,   4,   0, 
-      0,   6,   0,   0,   0,  56, 
-      0,   0,   0, 248,   0,   0, 
-      0, 244,   1,   0,   0, 112, 
-      2,   0,   0, 128,   3,   0, 
-      0, 180,   3,   0,   0,  65, 
-    111, 110,  57, 184,   0,   0, 
-      0, 184,   0,   0,   0,   0, 
-      2, 254, 255, 132,   0,   0, 
-      0,  52,   0,   0,   0,   1, 
-      0,  36,   0,   0,   0,  48, 
-      0,   0,   0,  48,   0,   0, 
-      0,  36,   0,   1,   0,  48, 
-      0,   0,   0,   0,   0,   3, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      2, 254, 255,  81,   0,   0, 
-      5,   4,   0,  15, 160,   0, 
-      0,   0,   0,   0,   0, 128, 
-     63,   0,   0,   0,   0,   0, 
-      0,   0,   0,  31,   0,   0, 
-      2,   5,   0,   0, 128,   0, 
-      0,  15, 144,   4,   0,   0, 
-      4,   0,   0,   3, 224,   0, 
-      0, 228, 144,   2,   0, 238, 
-    160,   2,   0, 228, 160,   4, 
-      0,   0,   4,   0,   0,  12, 
-    224,   0,   0,  20, 144,   3, 
-      0, 180, 160,   3,   0,  20, 
-    160,   4,   0,   0,   4,   0, 
-      0,   3, 128,   0,   0, 228, 
-    144,   1,   0, 238, 160,   1, 
-      0, 228, 160,   2,   0,   0, 
-      3,   0,   0,   3, 192,   0, 
-      0, 228, 128,   0,   0, 228, 
-    160,   1,   0,   0,   2,   0, 
-      0,  12, 192,   4,   0,  68, 
-    160, 255, 255,   0,   0,  83, 
-     72,  68,  82, 244,   0,   0, 
-      0,  64,   0,   1,   0,  61, 
-      0,   0,   0,  89,   0,   0, 
-      4,  70, 142,  32,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,  95,   0,   0,   3,  50, 
-     16,  16,   0,   0,   0,   0, 
-      0, 103,   0,   0,   4, 242, 
-     32,  16,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 101, 
-      0,   0,   3,  50,  32,  16, 
-      0,   1,   0,   0,   0, 101, 
-      0,   0,   3, 194,  32,  16, 
-      0,   1,   0,   0,   0,  50, 
-      0,   0,  11,  50,  32,  16, 
-      0,   0,   0,   0,   0,  70, 
-     16,  16,   0,   0,   0,   0, 
-      0, 230, 138,  32,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  70, 128,  32,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  54,   0,   0,   8, 194, 
-     32,  16,   0,   0,   0,   0, 
-      0,   2,  64,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0, 128,  63,  50,   0,   0, 
-     11,  50,  32,  16,   0,   1, 
-      0,   0,   0,  70,  16,  16, 
-      0,   0,   0,   0,   0, 230, 
-    138,  32,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,  70, 
-    128,  32,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,  50, 
-      0,   0,  11, 194,  32,  16, 
-      0,   1,   0,   0,   0,   6, 
-     20,  16,   0,   0,   0,   0, 
-      0, 166, 142,  32,   0,   0, 
-      0,   0,   0,   2,   0,   0, 
-      0,   6, 132,  32,   0,   0, 
-      0,   0,   0,   2,   0,   0, 
-      0,  62,   0,   0,   1,  83, 
-     84,  65,  84, 116,   0,   0, 
-      0,   5,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   4,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      0,   0,   0, 214,   0,   0, 
+      0,   2,   0,   0,   0,   5, 
+      0,   0,   0,   4,   0,   0, 
+      0, 255, 255, 255, 255,   1, 
+      0,   0,   0,   1,   0,   0, 
+      0,  12,   0,   0,   0, 219, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   1, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  82,  68,  69, 
-     70,   8,   1,   0,   0,   1, 
-      0,   0,   0,  64,   0,   0, 
-      0,   1,   0,   0,   0,  28, 
-      0,   0,   0,   0,   4, 254, 
-    255,   0,   1,   0,   0, 212, 
-      0,   0,   0,  60,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0,  99, 
-     98,  48,   0,  60,   0,   0, 
-      0,   3,   0,   0,   0,  88, 
-      0,   0,   0,  48,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0, 160,   0,   0, 
-      0,   0,   0,   0,   0,  16, 
-      0,   0,   0,   2,   0,   0, 
-      0, 172,   0,   0,   0,   0, 
-      0,   0,   0, 188,   0,   0, 
-      0,  16,   0,   0,   0,  16, 
-      0,   0,   0,   2,   0,   0, 
-      0, 172,   0,   0,   0,   0, 
-      0,   0,   0, 198,   0,   0, 
-      0,  32,   0,   0,   0,  16, 
-      0,   0,   0,   2,   0,   0, 
-      0, 172,   0,   0,   0,   0, 
-      0,   0,   0,  81, 117,  97, 
-    100,  68, 101, 115,  99,   0, 
-    171, 171, 171,   1,   0,   3, 
-      0,   1,   0,   4,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  84, 101, 120,  67, 111, 
-    111, 114, 100, 115,   0,  77, 
-     97, 115, 107,  84, 101, 120, 
-     67, 111, 111, 114, 100, 115, 
-      0,  77, 105,  99, 114, 111, 
-    115, 111, 102, 116,  32,  40, 
-     82,  41,  32,  72,  76,  83, 
-     76,  32,  83, 104,  97, 100, 
-    101, 114,  32,  67, 111, 109, 
-    112, 105, 108, 101, 114,  32, 
-     57,  46,  50,  57,  46,  57, 
-     53,  50,  46,  51,  49,  49, 
-     49,   0, 171, 171, 171,  73, 
-     83,  71,  78,  44,   0,   0, 
-      0,   1,   0,   0,   0,   8, 
-      0,   0,   0,  32,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,   7, 
-      3,   0,   0,  80,  79,  83, 
-     73,  84,  73,  79,  78,   0, 
-    171, 171, 171,  79,  83,  71, 
-     78, 104,   0,   0,   0,   3, 
-      0,   0,   0,   8,   0,   0, 
-      0,  80,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,   3,   0,   0,   0,   0, 
-      0,   0,   0,  15,   0,   0, 
-      0,  92,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   3,   0,   0,   0,   1, 
-      0,   0,   0,   3,  12,   0, 
-      0,  92,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   3,   0,   0,   0,   1, 
-      0,   0,   0,  12,   3,   0, 
-      0,  83,  86,  95,  80, 111, 
-    115, 105, 116, 105, 111, 110, 
-      0,  84,  69,  88,  67,  79, 
-     79,  82,  68,   0, 171, 171, 
-    171, 245,   9,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,   2,   0,   0,   0,   0, 
-      0,   0,   0, 208,   3,   0, 
-      0,  68,  88,  66,  67, 145, 
-     96, 208, 189, 244, 147,  57, 
-    205, 242, 133,  35, 176,  39, 
-    143, 121, 235,   1,   0,   0, 
-      0, 208,   3,   0,   0,   6, 
-      0,   0,   0,  56,   0,   0, 
-      0, 224,   0,   0,   0, 188, 
-      1,   0,   0,  56,   2,   0, 
-      0,  44,   3,   0,   0, 156, 
-      3,   0,   0,  65, 111, 110, 
-     57, 160,   0,   0,   0, 160, 
-      0,   0,   0,   0,   2, 255, 
-    255, 116,   0,   0,   0,  44, 
-      0,   0,   0,   0,   0,  44, 
-      0,   0,   0,  44,   0,   0, 
-      0,  44,   0,   2,   0,  36, 
-      0,   0,   0,  44,   0,   0, 
-      0,   0,   0,   1,   1,   1, 
-      0,   1,   2, 255, 255,  31, 
-      0,   0,   2,   0,   0,   0, 
-    128,   0,   0,  15, 176,  31, 
-      0,   0,   2,   0,   0,   0, 
-    144,   0,   8,  15, 160,  31, 
-      0,   0,   2,   0,   0,   0, 
-    144,   1,   8,  15, 160,   1, 
-      0,   0,   2,   0,   0,   3, 
-    128,   0,   0, 235, 176,  66, 
-      0,   0,   3,   1,   0,  15, 
-    128,   0,   0, 228, 176,   0, 
-      8, 228, 160,  66,   0,   0, 
-      3,   0,   0,  15, 128,   0, 
-      0, 228, 128,   1,   8, 228, 
-    160,   5,   0,   0,   3,   0, 
-      0,  15, 128,   0,   0, 255, 
-    128,   1,   0, 228, 128,   1, 
-      0,   0,   2,   0,   8,  15, 
-    128,   0,   0, 228, 128, 255, 
-    255,   0,   0,  83,  72,  68, 
-     82, 212,   0,   0,   0,  64, 
-      0,   0,   0,  53,   0,   0, 
-      0,  90,   0,   0,   3,   0, 
-     96,  16,   0,   0,   0,   0, 
-      0,  90,   0,   0,   3,   0, 
-     96,  16,   0,   1,   0,   0, 
-      0,  88,  24,   0,   4,   0, 
-    112,  16,   0,   0,   0,   0, 
-      0,  85,  85,   0,   0,  88, 
-     24,   0,   4,   0, 112,  16, 
-      0,   1,   0,   0,   0,  85, 
-     85,   0,   0,  98,  16,   0, 
-      3,  50,  16,  16,   0,   1, 
-      0,   0,   0,  98,  16,   0, 
-      3, 194,  16,  16,   0,   1, 
-      0,   0,   0, 101,   0,   0, 
-      3, 242,  32,  16,   0,   0, 
-      0,   0,   0, 104,   0,   0, 
-      2,   2,   0,   0,   0,  69, 
-      0,   0,   9, 242,   0,  16, 
-      0,   0,   0,   0,   0,  70, 
-     16,  16,   0,   1,   0,   0, 
-      0,  70, 126,  16,   0,   0, 
-      0,   0,   0,   0,  96,  16, 
-      0,   0,   0,   0,   0,  69, 
-      0,   0,   9, 242,   0,  16, 
-      0,   1,   0,   0,   0, 230, 
-     26,  16,   0,   1,   0,   0, 
-      0,  70, 126,  16,   0,   1, 
-      0,   0,   0,   0,  96,  16, 
-      0,   1,   0,   0,   0,  56, 
-      0,   0,   7, 242,  32,  16, 
-      0,   0,   0,   0,   0,  70, 
-     14,  16,   0,   0,   0,   0, 
-      0, 246,  15,  16,   0,   1, 
-      0,   0,   0,  62,   0,   0, 
-      1,  83,  84,  65,  84, 116, 
-      0,   0,   0,   4,   0,   0, 
-      0,   2,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   2, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,  82, 
-     68,  69,  70, 236,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   4,   0,   0, 
-      0,  28,   0,   0,   0,   0, 
-      4, 255, 255,   0,   1,   0, 
-      0, 187,   0,   0,   0, 156, 
-      0,   0,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0, 165,   0,   0,   0,   3, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0, 178,   0,   0, 
-      0,   2,   0,   0,   0,   5, 
-      0,   0,   0,   4,   0,   0, 
-      0, 255, 255, 255, 255,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,  12,   0,   0,   0, 182, 
-      0,   0,   0,   2,   0,   0, 
-      0,   5,   0,   0,   0,   4, 
-      0,   0,   0, 255, 255, 255, 
-    255,   1,   0,   0,   0,   1, 
-      0,   0,   0,  12,   0,   0, 
       0, 115,  83,  97, 109, 112, 
     108, 101, 114,   0, 115,  77, 
      97, 115, 107,  83,  97, 109, 
     112, 108, 101, 114,   0, 116, 
     101, 120,   0, 109,  97, 115, 
-    107,   0,  77, 105,  99, 114, 
+    107,   0,  99,  98,  50,   0, 
+    171, 219,   0,   0,   0,   7, 
+      0,   0,   0, 248,   0,   0, 
+      0, 112,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0, 160,   1,   0,   0,   0, 
+      0,   0,   0,  44,   0,   0, 
+      0,   0,   0,   0,   0, 184, 
+      1,   0,   0,   0,   0,   0, 
+      0, 200,   1,   0,   0,  48, 
+      0,   0,   0,   8,   0,   0, 
+      0,   0,   0,   0,   0, 212, 
+      1,   0,   0,   0,   0,   0, 
+      0, 228,   1,   0,   0,  64, 
+      0,   0,   0,  12,   0,   0, 
+      0,   2,   0,   0,   0, 236, 
+      1,   0,   0,   0,   0,   0, 
+      0, 252,   1,   0,   0,  80, 
+      0,   0,   0,   8,   0,   0, 
+      0,   2,   0,   0,   0, 212, 
+      1,   0,   0,   0,   0,   0, 
+      0,   4,   2,   0,   0,  88, 
+      0,   0,   0,   4,   0,   0, 
+      0,   2,   0,   0,   0,   8, 
+      2,   0,   0,   0,   0,   0, 
+      0,  24,   2,   0,   0,  92, 
+      0,   0,   0,   4,   0,   0, 
+      0,   2,   0,   0,   0,   8, 
+      2,   0,   0,   0,   0,   0, 
+      0,  32,   2,   0,   0,  96, 
+      0,   0,   0,   4,   0,   0, 
+      0,   2,   0,   0,   0,   8, 
+      2,   0,   0,   0,   0,   0, 
+      0,  68, 101, 118, 105,  99, 
+    101,  83, 112,  97,  99, 101, 
+     84, 111,  85, 115, 101, 114, 
+     83, 112,  97,  99, 101,   0, 
+    171,   3,   0,   3,   0,   3, 
+      0,   3,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0, 100, 
+    105, 109, 101, 110, 115, 105, 
+    111, 110, 115,   0, 171,   1, 
+      0,   3,   0,   1,   0,   2, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0, 100, 105, 102, 
+    102,   0, 171, 171, 171,   1, 
+      0,   3,   0,   1,   0,   3, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,  99, 101, 110, 
+    116, 101, 114,  49,   0,  65, 
+      0, 171, 171,   0,   0,   3, 
+      0,   1,   0,   1,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0, 114,  97, 100, 105, 117, 
+    115,  49,   0, 115, 113,  95, 
+    114,  97, 100, 105, 117, 115, 
+     49,   0,  77, 105,  99, 114, 
     111, 115, 111, 102, 116,  32, 
      40,  82,  41,  32,  72,  76, 
      83,  76,  32,  83, 104,  97, 
     100, 101, 114,  32,  67, 111, 
     109, 112, 105, 108, 101, 114, 
      32,  57,  46,  50,  57,  46, 
      57,  53,  50,  46,  51,  49, 
      49,  49,   0,  73,  83,  71, 
@@ -1878,644 +2809,650 @@ const BYTE d2deffect[] =
     171,  79,  83,  71,  78,  44, 
       0,   0,   0,   1,   0,   0, 
       0,   8,   0,   0,   0,  32, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   3, 
       0,   0,   0,   0,   0,   0, 
       0,  15,   0,   0,   0,  83, 
      86,  95,  84,  97, 114, 103, 
-    101, 116,   0, 171, 171,  49, 
-     14,   0,   0,   0,   0,   0, 
-      0,  83,  97, 109, 112, 108, 
-    101,  84, 101, 120, 116, 117, 
-    114, 101,  87, 105, 116, 104, 
-     83, 104,  97, 100, 111, 119, 
-      0,   4,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0, 128, 
-     63,   1,   0,   0,   0,   0, 
-      0, 128,  63,   1,   0,   0, 
-      0,   0,   0, 128,  63,   1, 
-      0,   0,   0,   0,   0, 128, 
-     63,   1,   0,   0,   0,   3, 
-      0,   0,   0, 255, 255, 255, 
-    255,  36,   4,   0,   0,  68, 
-     88,  66,  67, 116, 139,  68, 
-     62,  73, 113,  92,   4,  72, 
-     76, 225, 161,  30, 132, 222, 
-    233,   1,   0,   0,   0,  36, 
-      4,   0,   0,   6,   0,   0, 
-      0,  56,   0,   0,   0, 248, 
-      0,   0,   0, 244,   1,   0, 
-      0, 112,   2,   0,   0, 128, 
-      3,   0,   0, 180,   3,   0, 
-      0,  65, 111, 110,  57, 184, 
-      0,   0,   0, 184,   0,   0, 
-      0,   0,   2, 254, 255, 132, 
-      0,   0,   0,  52,   0,   0, 
-      0,   1,   0,  36,   0,   0, 
-      0,  48,   0,   0,   0,  48, 
-      0,   0,   0,  36,   0,   1, 
-      0,  48,   0,   0,   0,   0, 
-      0,   3,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   2, 254, 255,  81, 
-      0,   0,   5,   4,   0,  15, 
-    160,   0,   0,   0,   0,   0, 
-      0, 128,  63,   0,   0,   0, 
-      0,   0,   0,   0,   0,  31, 
-      0,   0,   2,   5,   0,   0, 
-    128,   0,   0,  15, 144,   4, 
-      0,   0,   4,   0,   0,   3, 
-    224,   0,   0, 228, 144,   2, 
-      0, 238, 160,   2,   0, 228, 
-    160,   4,   0,   0,   4,   0, 
-      0,  12, 224,   0,   0,  20, 
-    144,   3,   0, 180, 160,   3, 
-      0,  20, 160,   4,   0,   0, 
-      4,   0,   0,   3, 128,   0, 
-      0, 228, 144,   1,   0, 238, 
-    160,   1,   0, 228, 160,   2, 
-      0,   0,   3,   0,   0,   3, 
-    192,   0,   0, 228, 128,   0, 
-      0, 228, 160,   1,   0,   0, 
-      2,   0,   0,  12, 192,   4, 
-      0,  68, 160, 255, 255,   0, 
-      0,  83,  72,  68,  82, 244, 
-      0,   0,   0,  64,   0,   1, 
-      0,  61,   0,   0,   0,  89, 
-      0,   0,   4,  70, 142,  32, 
-      0,   0,   0,   0,   0,   3, 
-      0,   0,   0,  95,   0,   0, 
-      3,  50,  16,  16,   0,   0, 
-      0,   0,   0, 103,   0,   0, 
-      4, 242,  32,  16,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0, 101,   0,   0,   3,  50, 
-     32,  16,   0,   1,   0,   0, 
-      0, 101,   0,   0,   3, 194, 
-     32,  16,   0,   1,   0,   0, 
-      0,  50,   0,   0,  11,  50, 
-     32,  16,   0,   0,   0,   0, 
-      0,  70,  16,  16,   0,   0, 
-      0,   0,   0, 230, 138,  32, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  70, 128,  32, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  54,   0,   0, 
-      8, 194,  32,  16,   0,   0, 
-      0,   0,   0,   2,  64,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0, 128,  63,  50, 
-      0,   0,  11,  50,  32,  16, 
-      0,   1,   0,   0,   0,  70, 
-     16,  16,   0,   0,   0,   0, 
-      0, 230, 138,  32,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,  70, 128,  32,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,  50,   0,   0,  11, 194, 
-     32,  16,   0,   1,   0,   0, 
-      0,   6,  20,  16,   0,   0, 
-      0,   0,   0, 166, 142,  32, 
-      0,   0,   0,   0,   0,   2, 
-      0,   0,   0,   6, 132,  32, 
-      0,   0,   0,   0,   0,   2, 
-      0,   0,   0,  62,   0,   0, 
-      1,  83,  84,  65,  84, 116, 
-      0,   0,   0,   5,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   4,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,  82, 
-     68,  69,  70,   8,   1,   0, 
-      0,   1,   0,   0,   0,  64, 
-      0,   0,   0,   1,   0,   0, 
-      0,  28,   0,   0,   0,   0, 
-      4, 254, 255,   0,   1,   0, 
-      0, 212,   0,   0,   0,  60, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,  99,  98,  48,   0,  60, 
-      0,   0,   0,   3,   0,   0, 
-      0,  88,   0,   0,   0,  48, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0, 160, 
-      0,   0,   0,   0,   0,   0, 
-      0,  16,   0,   0,   0,   2, 
-      0,   0,   0, 172,   0,   0, 
-      0,   0,   0,   0,   0, 188, 
-      0,   0,   0,  16,   0,   0, 
-      0,  16,   0,   0,   0,   2, 
-      0,   0,   0, 172,   0,   0, 
-      0,   0,   0,   0,   0, 198, 
-      0,   0,   0,  32,   0,   0, 
-      0,  16,   0,   0,   0,   2, 
-      0,   0,   0, 172,   0,   0, 
-      0,   0,   0,   0,   0,  81, 
-    117,  97, 100,  68, 101, 115, 
-     99,   0, 171, 171, 171,   1, 
-      0,   3,   0,   1,   0,   4, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  84, 101, 120, 
-     67, 111, 111, 114, 100, 115, 
-      0,  77,  97, 115, 107,  84, 
-    101, 120,  67, 111, 111, 114, 
-    100, 115,   0,  77, 105,  99, 
-    114, 111, 115, 111, 102, 116, 
-     32,  40,  82,  41,  32,  72, 
-     76,  83,  76,  32,  83, 104, 
-     97, 100, 101, 114,  32,  67, 
-    111, 109, 112, 105, 108, 101, 
-    114,  32,  57,  46,  50,  57, 
-     46,  57,  53,  50,  46,  51, 
-     49,  49,  49,   0, 171, 171, 
-    171,  73,  83,  71,  78,  44, 
-      0,   0,   0,   1,   0,   0, 
-      0,   8,   0,   0,   0,  32, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   3, 
-      0,   0,   0,   0,   0,   0, 
-      0,   7,   3,   0,   0,  80, 
-     79,  83,  73,  84,  73,  79, 
-     78,   0, 171, 171, 171,  79, 
-     83,  71,  78, 104,   0,   0, 
-      0,   3,   0,   0,   0,   8, 
-      0,   0,   0,  80,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,  15, 
-      0,   0,   0,  92,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   1,   0,   0,   0,   3, 
-     12,   0,   0,  92,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   1,   0,   0,   0,  12, 
-      3,   0,   0,  83,  86,  95, 
-     80, 111, 115, 105, 116, 105, 
-    111, 110,   0,  84,  69,  88, 
-     67,  79,  79,  82,  68,   0, 
-    171, 171, 171,  85,  18,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   2,   0,   0, 
-      0,   0,   0,   0,   0, 232, 
-      9,   0,   0,  68,  88,  66, 
-     67,  45,  80,  33,   8,   5, 
-     16, 134, 134, 115,  16, 129, 
-     43, 103, 216, 255, 210,   1, 
-      0,   0,   0, 232,   9,   0, 
-      0,   6,   0,   0,   0,  56, 
-      0,   0,   0, 248,   2,   0, 
-      0,   8,   7,   0,   0, 132, 
-      7,   0,   0,  68,   9,   0, 
-      0, 180,   9,   0,   0,  65, 
-    111, 110,  57, 184,   2,   0, 
-      0, 184,   2,   0,   0,   0, 
-      2, 255, 255, 120,   2,   0, 
-      0,  64,   0,   0,   0,   2, 
-      0,  40,   0,   0,   0,  64, 
-      0,   0,   0,  64,   0,   1, 
-      0,  36,   0,   0,   0,  64, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   6,   0,   4,   0,   3, 
-      0,   0,   0,   0,   0,   1, 
-      2, 255, 255,  31,   0,   0, 
-      2,   0,   0,   0, 128,   0, 
-      0,  15, 176,  31,   0,   0, 
-      2,   0,   0,   0, 144,   0, 
-      8,  15, 160,   2,   0,   0, 
-      3,   0,   0,   1, 128,   0, 
-      0,   0, 176,   0,   0,  85, 
-    160,   1,   0,   0,   2,   0, 
-      0,   2, 128,   0,   0,  85, 
-    176,   2,   0,   0,   3,   1, 
-      0,   1, 128,   0,   0,   0, 
-    176,   0,   0,   0, 160,   1, 
-      0,   0,   2,   1,   0,   2, 
-    128,   0,   0,  85, 176,  66, 
-      0,   0,   3,   0,   0,  15, 
-    128,   0,   0, 228, 128,   0, 
-      8, 228, 160,  66,   0,   0, 
-      3,   1,   0,  15, 128,   1, 
-      0, 228, 128,   0,   8, 228, 
-    160,   5,   0,   0,   3,   0, 
-      0,   1, 128,   0,   0, 255, 
-    128,   3,   0,  85, 160,   4, 
-      0,   0,   4,   0,   0,   1, 
-    128,   3,   0,   0, 160,   1, 
-      0, 255, 128,   0,   0,   0, 
-    128,   2,   0,   0,   3,   1, 
-      0,   1, 128,   0,   0,   0, 
-    176,   0,   0, 170, 160,   1, 
-      0,   0,   2,   1,   0,   2, 
-    128,   0,   0,  85, 176,   2, 
-      0,   0,   3,   2,   0,   1, 
-    128,   0,   0,   0, 176,   0, 
-      0, 255, 160,   1,   0,   0, 
-      2,   2,   0,   2, 128,   0, 
-      0,  85, 176,  66,   0,   0, 
-      3,   1,   0,  15, 128,   1, 
-      0, 228, 128,   0,   8, 228, 
-    160,  66,   0,   0,   3,   2, 
-      0,  15, 128,   2,   0, 228, 
-    128,   0,   8, 228, 160,   4, 
-      0,   0,   4,   0,   0,   1, 
-    128,   3,   0, 170, 160,   1, 
-      0, 255, 128,   0,   0,   0, 
-    128,   4,   0,   0,   4,   0, 
-      0,   1, 128,   3,   0, 255, 
-    160,   2,   0, 255, 128,   0, 
-      0,   0, 128,   2,   0,   0, 
-      3,   1,   0,   1, 128,   0, 
-      0,   0, 176,   1,   0,   0, 
-    160,   1,   0,   0,   2,   1, 
-      0,   2, 128,   0,   0,  85, 
-    176,   2,   0,   0,   3,   2, 
-      0,   1, 128,   0,   0,   0, 
-    176,   1,   0,  85, 160,   1, 
-      0,   0,   2,   2,   0,   2, 
-    128,   0,   0,  85, 176,  66, 
-      0,   0,   3,   1,   0,  15, 
-    128,   1,   0, 228, 128,   0, 
-      8, 228, 160,  66,   0,   0, 
-      3,   2,   0,  15, 128,   2, 
-      0, 228, 128,   0,   8, 228, 
-    160,   4,   0,   0,   4,   0, 
-      0,   1, 128,   4,   0,   0, 
-    160,   1,   0, 255, 128,   0, 
-      0,   0, 128,   4,   0,   0, 
-      4,   0,   0,   1, 128,   4, 
-      0,  85, 160,   2,   0, 255, 
-    128,   0,   0,   0, 128,   2, 
-      0,   0,   3,   1,   0,   1, 
-    128,   0,   0,   0, 176,   1, 
-      0, 170, 160,   1,   0,   0, 
-      2,   1,   0,   2, 128,   0, 
-      0,  85, 176,   2,   0,   0, 
-      3,   2,   0,   1, 128,   0, 
-      0,   0, 176,   1,   0, 255, 
-    160,   1,   0,   0,   2,   2, 
-      0,   2, 128,   0,   0,  85, 
-    176,  66,   0,   0,   3,   1, 
-      0,  15, 128,   1,   0, 228, 
-    128,   0,   8, 228, 160,  66, 
-      0,   0,   3,   2,   0,  15, 
-    128,   2,   0, 228, 128,   0, 
-      8, 228, 160,   4,   0,   0, 
-      4,   0,   0,   1, 128,   4, 
-      0, 170, 160,   1,   0, 255, 
-    128,   0,   0,   0, 128,   4, 
-      0,   0,   4,   0,   0,   1, 
-    128,   4,   0, 255, 160,   2, 
-      0, 255, 128,   0,   0,   0, 
-    128,   2,   0,   0,   3,   1, 
-      0,   1, 128,   0,   0,   0, 
-    176,   2,   0,   0, 160,   1, 
-      0,   0,   2,   1,   0,   2, 
-    128,   0,   0,  85, 176,  66, 
-      0,   0,   3,   1,   0,  15, 
-    128,   1,   0, 228, 128,   0, 
-      8, 228, 160,   4,   0,   0, 
-      4,   0,   0,   1, 128,   5, 
-      0,   0, 160,   1,   0, 255, 
-    128,   0,   0,   0, 128,   5, 
-      0,   0,   3,   0,   0,  15, 
-    128,   0,   0,   0, 128,   6, 
-      0, 228, 160,   1,   0,   0, 
-      2,   0,   8,  15, 128,   0, 
-      0, 228, 128, 255, 255,   0, 
-      0,  83,  72,  68,  82,   8, 
-      4,   0,   0,  64,   0,   0, 
-      0,   2,   1,   0,   0,  89, 
-      0,   0,   4,  70, 142,  32, 
-      0,   0,   0,   0,   0,  10, 
-      0,   0,   0,  90,   0,   0, 
-      3,   0,  96,  16,   0,   0, 
-      0,   0,   0,  88,  24,   0, 
-      4,   0, 112,  16,   0,   0, 
-      0,   0,   0,  85,  85,   0, 
-      0,  98,  16,   0,   3,  50, 
-     16,  16,   0,   1,   0,   0, 
-      0, 101,   0,   0,   3, 242, 
-     32,  16,   0,   0,   0,   0, 
-      0, 104,   0,   0,   2,   4, 
-      0,   0,   0,   0,   0,   0, 
-      8, 242,   0,  16,   0,   0, 
-      0,   0,   0,   6,  16,  16, 
-      0,   1,   0,   0,   0,  38, 
-    135,  32,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,  54, 
-      0,   0,   5,  82,   0,  16, 
-      0,   1,   0,   0,   0,  86, 
-      7,  16,   0,   0,   0,   0, 
-      0,  54,   0,   0,   5, 162, 
-      0,  16,   0,   1,   0,   0, 
-      0,  86,  21,  16,   0,   1, 
-      0,   0,   0,  69,   0,   0, 
-      9, 242,   0,  16,   0,   2, 
-      0,   0,   0, 230,  10,  16, 
-      0,   1,   0,   0,   0,  70, 
-    126,  16,   0,   0,   0,   0, 
-      0,   0,  96,  16,   0,   0, 
-      0,   0,   0,  69,   0,   0, 
-      9, 242,   0,  16,   0,   1, 
-      0,   0,   0,  70,   0,  16, 
-      0,   1,   0,   0,   0,  70, 
-    126,  16,   0,   0,   0,   0, 
-      0,   0,  96,  16,   0,   0, 
-      0,   0,   0,  56,   0,   0, 
-      8,  18,   0,  16,   0,   1, 
-      0,   0,   0,  58,   0,  16, 
-      0,   2,   0,   0,   0,  26, 
-    128,  32,   0,   0,   0,   0, 
-      0,   6,   0,   0,   0,  50, 
-      0,   0,  10,  18,   0,  16, 
-      0,   1,   0,   0,   0,  10, 
-    128,  32,   0,   0,   0,   0, 
-      0,   6,   0,   0,   0,  58, 
-      0,  16,   0,   1,   0,   0, 
-      0,  10,   0,  16,   0,   1, 
-      0,   0,   0,  54,   0,   0, 
-      5, 162,   0,  16,   0,   0, 
-      0,   0,   0,  86,  21,  16, 
-      0,   1,   0,   0,   0,  69, 
-      0,   0,   9, 242,   0,  16, 
-      0,   2,   0,   0,   0,  70, 
-      0,  16,   0,   0,   0,   0, 
-      0,  70, 126,  16,   0,   0, 
-      0,   0,   0,   0,  96,  16, 
-      0,   0,   0,   0,   0,  69, 
-      0,   0,   9, 242,   0,  16, 
-      0,   0,   0,   0,   0, 230, 
-     10,  16,   0,   0,   0,   0, 
-      0,  70, 126,  16,   0,   0, 
-      0,   0,   0,   0,  96,  16, 
-      0,   0,   0,   0,   0,  50, 
-      0,   0,  10,  18,   0,  16, 
-      0,   0,   0,   0,   0,  42, 
-    128,  32,   0,   0,   0,   0, 
-      0,   6,   0,   0,   0,  58, 
-      0,  16,   0,   2,   0,   0, 
-      0,  10,   0,  16,   0,   1, 
-      0,   0,   0,  50,   0,   0, 
-     10,  18,   0,  16,   0,   0, 
-      0,   0,   0,  58, 128,  32, 
-      0,   0,   0,   0,   0,   6, 
-      0,   0,   0,  58,   0,  16, 
-      0,   0,   0,   0,   0,  10, 
-      0,  16,   0,   0,   0,   0, 
-      0,   0,   0,   0,   8, 242, 
-      0,  16,   0,   1,   0,   0, 
-      0,   6,  16,  16,   0,   1, 
-      0,   0,   0,  38, 135,  32, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,  54,   0,   0, 
-      5,  82,   0,  16,   0,   2, 
-      0,   0,   0,  86,   7,  16, 
-      0,   1,   0,   0,   0,  54, 
-      0,   0,   5, 162,   0,  16, 
-      0,   2,   0,   0,   0,  86, 
-     21,  16,   0,   1,   0,   0, 
-      0,  69,   0,   0,   9, 242, 
-      0,  16,   0,   3,   0,   0, 
-      0,  70,   0,  16,   0,   2, 
-      0,   0,   0,  70, 126,  16, 
-      0,   0,   0,   0,   0,   0, 
-     96,  16,   0,   0,   0,   0, 
-      0,  69,   0,   0,   9, 242, 
-      0,  16,   0,   2,   0,   0, 
-      0, 230,  10,  16,   0,   2, 
-      0,   0,   0,  70, 126,  16, 
-      0,   0,   0,   0,   0,   0, 
-     96,  16,   0,   0,   0,   0, 
-      0,  50,   0,   0,  10,  18, 
-      0,  16,   0,   0,   0,   0, 
-      0,  10, 128,  32,   0,   0, 
-      0,   0,   0,   7,   0,   0, 
-      0,  58,   0,  16,   0,   3, 
-      0,   0,   0,  10,   0,  16, 
-      0,   0,   0,   0,   0,  50, 
-      0,   0,  10,  18,   0,  16, 
-      0,   0,   0,   0,   0,  26, 
-    128,  32,   0,   0,   0,   0, 
-      0,   7,   0,   0,   0,  58, 
-      0,  16,   0,   2,   0,   0, 
-      0,  10,   0,  16,   0,   0, 
-      0,   0,   0,  54,   0,   0, 
-      5, 162,   0,  16,   0,   1, 
-      0,   0,   0,  86,  21,  16, 
-      0,   1,   0,   0,   0,  69, 
-      0,   0,   9, 242,   0,  16, 
-      0,   2,   0,   0,   0,  70, 
-      0,  16,   0,   1,   0,   0, 
-      0,  70, 126,  16,   0,   0, 
-      0,   0,   0,   0,  96,  16, 
-      0,   0,   0,   0,   0,  69, 
-      0,   0,   9, 242,   0,  16, 
-      0,   1,   0,   0,   0, 230, 
-     10,  16,   0,   1,   0,   0, 
-      0,  70, 126,  16,   0,   0, 
-      0,   0,   0,   0,  96,  16, 
-      0,   0,   0,   0,   0,  50, 
-      0,   0,  10,  18,   0,  16, 
-      0,   0,   0,   0,   0,  42, 
-    128,  32,   0,   0,   0,   0, 
-      0,   7,   0,   0,   0,  58, 
-      0,  16,   0,   2,   0,   0, 
-      0,  10,   0,  16,   0,   0, 
-      0,   0,   0,  50,   0,   0, 
-     10,  18,   0,  16,   0,   0, 
-      0,   0,   0,  58, 128,  32, 
-      0,   0,   0,   0,   0,   7, 
-      0,   0,   0,  58,   0,  16, 
-      0,   1,   0,   0,   0,  10, 
-      0,  16,   0,   0,   0,   0, 
-      0,   0,   0,   0,   8,  18, 
-      0,  16,   0,   1,   0,   0, 
-      0,  10,  16,  16,   0,   1, 
-      0,   0,   0,  10, 128,  32, 
-      0,   0,   0,   0,   0,   2, 
-      0,   0,   0,  54,   0,   0, 
-      5,  34,   0,  16,   0,   1, 
-      0,   0,   0,  26,  16,  16, 
-      0,   1,   0,   0,   0,  69, 
-      0,   0,   9, 242,   0,  16, 
-      0,   1,   0,   0,   0,  70, 
-      0,  16,   0,   1,   0,   0, 
-      0,  70, 126,  16,   0,   0, 
-      0,   0,   0,   0,  96,  16, 
-      0,   0,   0,   0,   0,  50, 
-      0,   0,  10,  18,   0,  16, 
-      0,   0,   0,   0,   0,  10, 
-    128,  32,   0,   0,   0,   0, 
-      0,   8,   0,   0,   0,  58, 
-      0,  16,   0,   1,   0,   0, 
-      0,  10,   0,  16,   0,   0, 
-      0,   0,   0,  56,   0,   0, 
-      8, 242,  32,  16,   0,   0, 
-      0,   0,   0,   6,   0,  16, 
-      0,   0,   0,   0,   0,  70, 
-    142,  32,   0,   0,   0,   0, 
-      0,   9,   0,   0,   0,  62, 
-      0,   0,   1,  83,  84,  65, 
-     84, 116,   0,   0,   0,  30, 
-      0,   0,   0,   4,   0,   0, 
-      0,   0,   0,   0,   0,   2, 
-      0,   0,   0,   5,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   9,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   9,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  82,  68,  69,  70, 184, 
-      1,   0,   0,   1,   0,   0, 
-      0, 148,   0,   0,   0,   3, 
-      0,   0,   0,  28,   0,   0, 
-      0,   0,   4, 255, 255,   0, 
-      1,   0,   0, 132,   1,   0, 
-      0, 124,   0,   0,   0,   3, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0, 139,   0,   0, 
-      0,   2,   0,   0,   0,   5, 
-      0,   0,   0,   4,   0,   0, 
-      0, 255, 255, 255, 255,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,  12,   0,   0,   0, 143, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0, 115,  83, 104,  97, 100, 
-    111, 119,  83,  97, 109, 112, 
-    108, 101, 114,   0, 116, 101, 
-    120,   0,  99,  98,  49,   0, 
-    171, 143,   0,   0,   0,   4, 
-      0,   0,   0, 172,   0,   0, 
-      0, 160,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  12,   1,   0,   0,   0, 
-      0,   0,   0,  48,   0,   0, 
-      0,   2,   0,   0,   0,  28, 
+    101, 116,   0, 171, 171, 231, 
+     17,   0,   0,   0,   0,   0, 
+      0,  80,  49,   0,   4,   7, 
+      0,   0,  68,  88,  66,  67, 
+    171,   7,  14, 215, 173,  41, 
+     24, 247, 237,   1,  38,  39, 
+    209, 221, 241, 232,   1,   0, 
+      0,   0,   4,   7,   0,   0, 
+      6,   0,   0,   0,  56,   0, 
+      0,   0, 148,   1,   0,   0, 
+    104,   3,   0,   0, 228,   3, 
+      0,   0,  96,   6,   0,   0, 
+    148,   6,   0,   0,  65, 111, 
+    110,  57,  84,   1,   0,   0, 
+     84,   1,   0,   0,   0,   2, 
+    254, 255, 252,   0,   0,   0, 
+     88,   0,   0,   0,   4,   0, 
+     36,   0,   0,   0,  84,   0, 
+      0,   0,  84,   0,   0,   0, 
+     36,   0,   1,   0,  84,   0, 
+      0,   0,   0,   0,   1,   0, 
       1,   0,   0,   0,   0,   0, 
-      0,  44,   1,   0,   0,  48, 
-      0,   0,   0,  48,   0,   0, 
-      0,   0,   0,   0,   0,  60, 
-      1,   0,   0,   0,   0,   0, 
-      0,  76,   1,   0,   0,  96, 
-      0,   0,   0,  48,   0,   0, 
-      0,   2,   0,   0,   0,  88, 
-      1,   0,   0,   0,   0,   0, 
-      0, 104,   1,   0,   0, 144, 
-      0,   0,   0,  16,   0,   0, 
-      0,   2,   0,   0,   0, 116, 
+      0,   0,   2,   0,   1,   0, 
+      2,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   2,   0, 
+      3,   0,   0,   0,   0,   0, 
+      1,   0,   3,   0,   1,   0, 
+      5,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   2, 
+    254, 255,  81,   0,   0,   5, 
+      6,   0,  15, 160,   0,   0, 
+    128,  63,   0,   0,   0,  63, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  31,   0,   0,   2, 
+      5,   0,   0, 128,   0,   0, 
+     15, 144,   4,   0,   0,   4, 
+      0,   0,   3, 224,   0,   0, 
+    228, 144,   2,   0, 238, 160, 
+      2,   0, 228, 160,   4,   0, 
+      0,   4,   0,   0,   3, 128, 
+      0,   0, 228, 144,   1,   0, 
+    238, 160,   1,   0, 228, 160, 
+      2,   0,   0,   3,   0,   0, 
+      4, 128,   0,   0,   0, 128, 
+      6,   0,   0, 160,   5,   0, 
+      0,   3,   0,   0,   4, 128, 
+      0,   0, 170, 128,   5,   0, 
+      0, 160,   5,   0,   0,   3, 
+      1,   0,   1, 128,   0,   0, 
+    170, 128,   6,   0,  85, 160, 
+      2,   0,   0,   3,   0,   0, 
+      4, 128,   0,   0,  85, 129, 
+      6,   0,   0, 160,   2,   0, 
+      0,   3,   0,   0,   3, 192, 
+      0,   0, 228, 128,   0,   0, 
+    228, 160,   5,   0,   0,   3, 
+      0,   0,   1, 128,   0,   0, 
+    170, 128,   5,   0,  85, 160, 
+      5,   0,   0,   3,   1,   0, 
+      2, 128,   0,   0,   0, 128, 
+      6,   0,  85, 160,   1,   0, 
+      0,   2,   1,   0,   4, 128, 
+      6,   0,   0, 160,   8,   0, 
+      0,   3,   0,   0,   8, 224, 
+      1,   0, 228, 128,   3,   0, 
+    228, 160,   8,   0,   0,   3, 
+      0,   0,   4, 224,   1,   0, 
+    228, 128,   4,   0, 228, 160, 
+      1,   0,   0,   2,   0,   0, 
+     12, 192,   6,   0,  36, 160, 
+    255, 255,   0,   0,  83,  72, 
+     68,  82, 204,   1,   0,   0, 
+     64,   0,   1,   0, 115,   0, 
+      0,   0,  89,   0,   0,   4, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+     89,   0,   0,   4,  70, 142, 
+     32,   0,   1,   0,   0,   0, 
+      4,   0,   0,   0,  95,   0, 
+      0,   3,  50,  16,  16,   0, 
+      0,   0,   0,   0, 103,   0, 
+      0,   4, 242,  32,  16,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0, 101,   0,   0,   3, 
+     50,  32,  16,   0,   1,   0, 
+      0,   0, 101,   0,   0,   3, 
+    194,  32,  16,   0,   1,   0, 
+      0,   0, 104,   0,   0,   2, 
+      2,   0,   0,   0,  54,   0, 
+      0,   8, 194,  32,  16,   0, 
+      0,   0,   0,   0,   2,  64, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 128,  63, 
+     50,   0,   0,  11,  50,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,  16,  16,   0,   0,   0, 
+      0,   0, 230, 138,  32,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  70, 128,  32,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  54,   0,   0,   5, 
+     50,  32,  16,   0,   0,   0, 
+      0,   0,  70,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   7,  18,   0,  16,   0, 
+      0,   0,   0,   0,  10,   0, 
+     16,   0,   0,   0,   0,   0, 
+      1,  64,   0,   0,   0,   0, 
+    128,  63,   0,   0,   0,   8, 
+     34,   0,  16,   0,   0,   0, 
+      0,   0,  26,   0,  16, 128, 
+     65,   0,   0,   0,   0,   0, 
+      0,   0,   1,  64,   0,   0, 
+      0,   0, 128,  63,  56,   0, 
+      0,   8,  50,   0,  16,   0, 
+      0,   0,   0,   0,  70,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70, 128,  32,   0,   1,   0, 
+      0,   0,   3,   0,   0,   0, 
+     56,   0,   0,  10,  50,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70,   0,  16,   0,   0,   0, 
+      0,   0,   2,  64,   0,   0, 
+      0,   0,   0,  63,   0,   0, 
+      0,  63,   0,   0,   0,   0, 
+      0,   0,   0,   0,  54,   0, 
+      0,   5,  66,   0,  16,   0, 
+      1,   0,   0,   0,   1,  64, 
+      0,   0,   0,   0, 128,  63, 
+     16,   0,   0,   8,  66,  32, 
+     16,   0,   1,   0,   0,   0, 
+     70,   2,  16,   0,   1,   0, 
+      0,   0,  70, 130,  32,   0, 
       1,   0,   0,   0,   0,   0, 
-      0,  66, 108, 117, 114,  79, 
-    102, 102, 115, 101, 116, 115, 
-     72,   0, 171, 171, 171,   1, 
-      0,   3,   0,   1,   0,   4, 
-      0,   3,   0,   0,   0,   0, 
-      0,   0,   0,  66, 108, 117, 
-    114,  79, 102, 102, 115, 101, 
-    116, 115,  86,   0, 171, 171, 
-    171,   1,   0,   3,   0,   1, 
-      0,   4,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,  66, 
-    108, 117, 114,  87, 101, 105, 
-    103, 104, 116, 115,   0,   1, 
-      0,   3,   0,   1,   0,   4, 
-      0,   3,   0,   0,   0,   0, 
-      0,   0,   0,  83, 104,  97, 
-    100, 111, 119,  67, 111, 108, 
-    111, 114,   0,   1,   0,   3, 
-      0,   1,   0,   4,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      0,   0,  16,   0,   0,   8, 
+    130,  32,  16,   0,   1,   0, 
+      0,   0,  70,   2,  16,   0, 
+      1,   0,   0,   0,  70, 130, 
+     32,   0,   1,   0,   0,   0, 
+      1,   0,   0,   0,  50,   0, 
+      0,  11,  50,  32,  16,   0, 
+      1,   0,   0,   0,  70,  16, 
+     16,   0,   0,   0,   0,   0, 
+    230, 138,  32,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
+     70, 128,  32,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
+     62,   0,   0,   1,  83,  84, 
+     65,  84, 116,   0,   0,   0, 
+     12,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+      4,   0,   0,   0,   6,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  82,  68,  69,  70, 
+    116,   2,   0,   0,   2,   0, 
+      0,   0, 100,   0,   0,   0, 
+      2,   0,   0,   0,  28,   0, 
+      0,   0,   0,   4, 254, 255, 
+      0,   1,   0,   0,  67,   2, 
+      0,   0,  92,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,  96,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+     99,  98,  48,   0,  99,  98, 
+     50,   0,  92,   0,   0,   0, 
+      3,   0,   0,   0, 148,   0, 
+      0,   0,  48,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  96,   0,   0,   0, 
+      7,   0,   0,   0,  16,   1, 
+      0,   0, 112,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 220,   0,   0,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    232,   0,   0,   0,   0,   0, 
+      0,   0, 248,   0,   0,   0, 
+     16,   0,   0,   0,  16,   0, 
+      0,   0,   0,   0,   0,   0, 
+    232,   0,   0,   0,   0,   0, 
+      0,   0,   2,   1,   0,   0, 
+     32,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    232,   0,   0,   0,   0,   0, 
+      0,   0,  81, 117,  97, 100, 
+     68, 101, 115,  99,   0, 171, 
+    171, 171,   1,   0,   3,   0, 
+      1,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     84, 101, 120,  67, 111, 111, 
+    114, 100, 115,   0,  77,  97, 
+    115, 107,  84, 101, 120,  67, 
+    111, 111, 114, 100, 115,   0, 
+    184,   1,   0,   0,   0,   0, 
+      0,   0,  44,   0,   0,   0, 
+      2,   0,   0,   0, 208,   1, 
+      0,   0,   0,   0,   0,   0, 
+    224,   1,   0,   0,  48,   0, 
+      0,   0,   8,   0,   0,   0, 
+      2,   0,   0,   0, 236,   1, 
+      0,   0,   0,   0,   0,   0, 
+    252,   1,   0,   0,  64,   0, 
+      0,   0,  12,   0,   0,   0, 
+      0,   0,   0,   0,   4,   2, 
+      0,   0,   0,   0,   0,   0, 
+     20,   2,   0,   0,  80,   0, 
+      0,   0,   8,   0,   0,   0, 
+      0,   0,   0,   0, 236,   1, 
+      0,   0,   0,   0,   0,   0, 
+     28,   2,   0,   0,  88,   0, 
+      0,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,  32,   2, 
+      0,   0,   0,   0,   0,   0, 
+     48,   2,   0,   0,  92,   0, 
+      0,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,  32,   2, 
+      0,   0,   0,   0,   0,   0, 
+     56,   2,   0,   0,  96,   0, 
+      0,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,  32,   2, 
+      0,   0,   0,   0,   0,   0, 
+     68, 101, 118, 105,  99, 101, 
+     83, 112,  97,  99, 101,  84, 
+    111,  85, 115, 101, 114,  83, 
+    112,  97,  99, 101,   0, 171, 
+      3,   0,   3,   0,   3,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 100, 105, 
+    109, 101, 110, 115, 105, 111, 
+    110, 115,   0, 171,   1,   0, 
+      3,   0,   1,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 100, 105, 102, 102, 
+      0, 171, 171, 171,   1,   0, 
+      3,   0,   1,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  99, 101, 110, 116, 
+    101, 114,  49,   0,  65,   0, 
+    171, 171,   0,   0,   3,   0, 
+      1,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    114,  97, 100, 105, 117, 115, 
+     49,   0, 115, 113,  95, 114, 
+     97, 100, 105, 117, 115,  49, 
       0,  77, 105,  99, 114, 111, 
     115, 111, 102, 116,  32,  40, 
      82,  41,  32,  72,  76,  83, 
      76,  32,  83, 104,  97, 100, 
     101, 114,  32,  67, 111, 109, 
     112, 105, 108, 101, 114,  32, 
      57,  46,  50,  57,  46,  57, 
      53,  50,  46,  51,  49,  49, 
-     49,   0, 171, 171, 171,  73, 
-     83,  71,  78, 104,   0,   0, 
-      0,   3,   0,   0,   0,   8, 
-      0,   0,   0,  80,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,  15, 
-      0,   0,   0,  92,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   1,   0,   0,   0,   3, 
-      3,   0,   0,  92,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   1,   0,   0,   0,  12, 
-      0,   0,   0,  83,  86,  95, 
-     80, 111, 115, 105, 116, 105, 
-    111, 110,   0,  84,  69,  88, 
-     67,  79,  79,  82,  68,   0, 
-    171, 171, 171,  79,  83,  71, 
-     78,  44,   0,   0,   0,   1, 
-      0,   0,   0,   8,   0,   0, 
-      0,  32,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   3,   0,   0,   0,   0, 
-      0,   0,   0,  15,   0,   0, 
-      0,  83,  86,  95,  84,  97, 
-    114, 103, 101, 116,   0, 171, 
-    171, 145,  22,   0,   0,   0, 
-      0,   0,   0,  80,  49,   0, 
-      4,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0, 128,  63, 
+     49,   0,  73,  83,  71,  78, 
+     44,   0,   0,   0,   1,   0, 
+      0,   0,   8,   0,   0,   0, 
+     32,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   7,   3,   0,   0, 
+     80,  79,  83,  73,  84,  73, 
+     79,  78,   0, 171, 171, 171, 
+     79,  83,  71,  78, 104,   0, 
+      0,   0,   3,   0,   0,   0, 
+      8,   0,   0,   0,  80,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  92,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,  12,   0,   0,  92,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+     12,   3,   0,   0,  83,  86, 
+     95,  80, 111, 115, 105, 116, 
+    105, 111, 110,   0,  84,  69, 
+     88,  67,  79,  79,  82,  68, 
+      0, 171, 171, 171, 166,  27, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+    144,   7,   0,   0,  68,  88, 
+     66,  67,  35,  93, 208,  85, 
+    241,   8,  66, 139, 231,  63, 
+      6, 177, 181,  56, 138, 103, 
+      1,   0,   0,   0, 144,   7, 
+      0,   0,   6,   0,   0,   0, 
+     56,   0,   0,   0, 180,   1, 
+      0,   0,  12,   4,   0,   0, 
+    136,   4,   0,   0, 236,   6, 
+      0,   0,  92,   7,   0,   0, 
+     65, 111, 110,  57, 116,   1, 
+      0,   0, 116,   1,   0,   0, 
+      0,   2, 255, 255,  60,   1, 
+      0,   0,  56,   0,   0,   0, 
+      1,   0,  44,   0,   0,   0, 
+     56,   0,   0,   0,  56,   0, 
+      2,   0,  36,   0,   0,   0, 
+     56,   0,   0,   0,   0,   0, 
+      1,   1,   1,   0,   0,   0, 
+      4,   0,   2,   0,   0,   0, 
+      0,   0,   0,   0,   1,   2, 
+    255, 255,  81,   0,   0,   5, 
+      2,   0,  15, 160,   0,   0, 
+      0,  63,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  31,   0,   0,   2, 
+      0,   0,   0, 128,   0,   0, 
+     15, 176,  31,   0,   0,   2, 
+      0,   0,   0, 144,   0,   8, 
+     15, 160,  31,   0,   0,   2, 
+      0,   0,   0, 144,   1,   8, 
+     15, 160,   5,   0,   0,   3, 
+      0,   0,   8, 128,   1,   0, 
+    255, 160,   1,   0, 255, 160, 
+      2,   0,   0,   3,   0,   0, 
+      3, 128,   0,   0, 235, 176, 
+      1,   0, 228, 161,  90,   0, 
+      0,   4,   0,   0,   8, 128, 
+      0,   0, 228, 128,   0,   0, 
+    228, 128,   0,   0, 255, 129, 
+      5,   0,   0,   3,   0,   0, 
+      8, 128,   0,   0, 255, 128, 
+      2,   0,   0, 160,   1,   0, 
+      0,   2,   0,   0,   4, 128, 
+      1,   0, 255, 160,   8,   0, 
+      0,   3,   0,   0,   1, 128, 
+      0,   0, 228, 128,   0,   0, 
+    228, 160,   6,   0,   0,   2, 
+      0,   0,   1, 128,   0,   0, 
+      0, 128,   5,   0,   0,   3, 
+      0,   0,   1, 128,   0,   0, 
+      0, 128,   0,   0, 255, 128, 
+      1,   0,   0,   2,   0,   0, 
+      2, 128,   2,   0,   0, 160, 
+     66,   0,   0,   3,   1,   0, 
+     15, 128,   0,   0, 228, 176, 
+      1,   8, 228, 160,  66,   0, 
+      0,   3,   2,   0,  15, 128, 
+      0,   0, 228, 128,   0,   8, 
+    228, 160,   1,   0,   0,   2, 
+      0,   0,   8, 128,   1,   0, 
+    255, 160,   4,   0,   0,   4, 
+      0,   0,   1, 128,   0,   0, 
+      0, 128,   0,   0, 170, 161, 
+      0,   0, 255, 129,   5,   0, 
+      0,   3,   1,   0,  15, 128, 
+      1,   0, 255, 128,   2,   0, 
+    228, 128,  88,   0,   0,   4, 
+      0,   0,  15, 128,   0,   0, 
+      0, 128,   2,   0,  85, 160, 
+      1,   0, 228, 128,   1,   0, 
+      0,   2,   0,   8,  15, 128, 
+      0,   0, 228, 128, 255, 255, 
+      0,   0,  83,  72,  68,  82, 
+     80,   2,   0,   0,  64,   0, 
+      0,   0, 148,   0,   0,   0, 
+     89,   0,   0,   4,  70, 142, 
+     32,   0,   0,   0,   0,   0, 
+      6,   0,   0,   0,  90,   0, 
+      0,   3,   0,  96,  16,   0, 
+      0,   0,   0,   0,  90,   0, 
+      0,   3,   0,  96,  16,   0, 
+      1,   0,   0,   0,  88,  24, 
+      0,   4,   0, 112,  16,   0, 
+      0,   0,   0,   0,  85,  85, 
+      0,   0,  88,  24,   0,   4, 
+      0, 112,  16,   0,   1,   0, 
+      0,   0,  85,  85,   0,   0, 
+     98,  16,   0,   3,  50,  16, 
+     16,   0,   1,   0,   0,   0, 
+     98,  16,   0,   3, 194,  16, 
+     16,   0,   1,   0,   0,   0, 
+    101,   0,   0,   3, 242,  32, 
+     16,   0,   0,   0,   0,   0, 
+    104,   0,   0,   2,   2,   0, 
+      0,   0,   0,   0,   0,   9, 
+     50,   0,  16,   0,   0,   0, 
+      0,   0, 230,  26,  16,   0, 
+      1,   0,   0,   0,  70, 128, 
+     32, 128,  65,   0,   0,   0, 
+      0,   0,   0,   0,   5,   0, 
+      0,   0,  54,   0,   0,   6, 
+     66,   0,  16,   0,   0,   0, 
+      0,   0,  58, 128,  32,   0, 
+      0,   0,   0,   0,   5,   0, 
+      0,   0,  16,   0,   0,   8, 
+     66,   0,  16,   0,   0,   0, 
+      0,   0,  70,   2,  16,   0, 
+      0,   0,   0,   0,  70, 130, 
+     32,   0,   0,   0,   0,   0, 
+      4,   0,   0,   0,  15,   0, 
+      0,   7,  18,   0,  16,   0, 
+      0,   0,   0,   0,  70,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,   0,  16,   0,   0,   0, 
+      0,   0,  50,   0,   0,  12, 
+     18,   0,  16,   0,   0,   0, 
+      0,   0,  58, 128,  32, 128, 
+     65,   0,   0,   0,   0,   0, 
+      0,   0,   5,   0,   0,   0, 
+     58, 128,  32,   0,   0,   0, 
+      0,   0,   5,   0,   0,   0, 
+     10,   0,  16,   0,   0,   0, 
+      0,   0,  56,   0,   0,   7, 
+     18,   0,  16,   0,   0,   0, 
+      0,   0,  10,   0,  16,   0, 
+      0,   0,   0,   0,   1,  64, 
+      0,   0,   0,   0,   0,  63, 
+     14,   0,   0,   7,  18,   0, 
+     16,   0,   0,   0,   0,   0, 
+     10,   0,  16,   0,   0,   0, 
+      0,   0,  42,   0,  16,   0, 
+      0,   0,   0,   0,  56,   0, 
+      0,   8,  66,   0,  16,   0, 
+      0,   0,   0,   0,  10,   0, 
+     16,   0,   0,   0,   0,   0, 
+     42, 128,  32,   0,   0,   0, 
+      0,   0,   4,   0,   0,   0, 
+     29,   0,   0,   9,  66,   0, 
+     16,   0,   0,   0,   0,   0, 
+     58, 128,  32, 128,  65,   0, 
+      0,   0,   0,   0,   0,   0, 
+      5,   0,   0,   0,  42,   0, 
+     16,   0,   0,   0,   0,   0, 
+     54,   0,   0,   5,  34,   0, 
+     16,   0,   0,   0,   0,   0, 
+      1,  64,   0,   0,   0,   0, 
+      0,  63,  69,   0,   0,   9, 
+    242,   0,  16,   0,   1,   0, 
+      0,   0,  70,   0,  16,   0, 
+      0,   0,   0,   0,  70, 126, 
+     16,   0,   0,   0,   0,   0, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  31,   0,   4,   3, 
+     42,   0,  16,   0,   0,   0, 
+      0,   0,  54,   0,   0,   8, 
+    242,  32,  16,   0,   0,   0, 
+      0,   0,   2,  64,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  62,   0, 
+      0,   1,  21,   0,   0,   1, 
+     69,   0,   0,   9, 242,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70,  16,  16,   0,   1,   0, 
+      0,   0,  70, 126,  16,   0, 
+      1,   0,   0,   0,   0,  96, 
+     16,   0,   1,   0,   0,   0, 
+     56,   0,   0,   7, 242,  32, 
+     16,   0,   0,   0,   0,   0, 
+    246,  15,  16,   0,   0,   0, 
+      0,   0,  70,  14,  16,   0, 
+      1,   0,   0,   0,  62,   0, 
+      0,   1,  83,  84,  65,  84, 
+    116,   0,   0,   0,  18,   0, 
+      0,   0,   2,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   8,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
-    128,  63,   1,   0,   0,   0, 
-      0,   0, 128,  63,   1,   0, 
-      0,   0,   0,   0, 128,  63, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      2,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     82,  68,  69,  70,  92,   2, 
+      0,   0,   1,   0,   0,   0, 
+    224,   0,   0,   0,   5,   0, 
+      0,   0,  28,   0,   0,   0, 
+      0,   4, 255, 255,   0,   1, 
+      0,   0,  43,   2,   0,   0, 
+    188,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0, 197,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0, 210,   0, 
+      0,   0,   2,   0,   0,   0, 
+      5,   0,   0,   0,   4,   0, 
+      0,   0, 255, 255, 255, 255, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,  12,   0,   0,   0, 
+    214,   0,   0,   0,   2,   0, 
+      0,   0,   5,   0,   0,   0, 
+      4,   0,   0,   0, 255, 255, 
+    255, 255,   1,   0,   0,   0, 
+      1,   0,   0,   0,  12,   0, 
+      0,   0, 219,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0, 115,  83, 
+     97, 109, 112, 108, 101, 114, 
+      0, 115,  77,  97, 115, 107, 
+     83,  97, 109, 112, 108, 101, 
+    114,   0, 116, 101, 120,   0, 
+    109,  97, 115, 107,   0,  99, 
+     98,  50,   0, 171, 219,   0, 
+      0,   0,   7,   0,   0,   0, 
+    248,   0,   0,   0, 112,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 160,   1, 
+      0,   0,   0,   0,   0,   0, 
+     44,   0,   0,   0,   0,   0, 
+      0,   0, 184,   1,   0,   0, 
+      0,   0,   0,   0, 200,   1, 
+      0,   0,  48,   0,   0,   0, 
+      8,   0,   0,   0,   0,   0, 
+      0,   0, 212,   1,   0,   0, 
+      0,   0,   0,   0, 228,   1, 
+      0,   0,  64,   0,   0,   0, 
+     12,   0,   0,   0,   2,   0, 
+      0,   0, 236,   1,   0,   0, 
+      0,   0,   0,   0, 252,   1, 
+      0,   0,  80,   0,   0,   0, 
+      8,   0,   0,   0,   2,   0, 
+      0,   0, 212,   1,   0,   0, 
+      0,   0,   0,   0,   4,   2, 
+      0,   0,  88,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   8,   2,   0,   0, 
+      0,   0,   0,   0,  24,   2, 
+      0,   0,  92,   0,   0,   0, 
+      4,   0,   0,   0,   2,   0, 
+      0,   0,   8,   2,   0,   0, 
+      0,   0,   0,   0,  32,   2, 
+      0,   0,  96,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   8,   2,   0,   0, 
+      0,   0,   0,   0,  68, 101, 
+    118, 105,  99, 101,  83, 112, 
+     97,  99, 101,  84, 111,  85, 
+    115, 101, 114,  83, 112,  97, 
+     99, 101,   0, 171,   3,   0, 
+      3,   0,   3,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 100, 105, 109, 101, 
+    110, 115, 105, 111, 110, 115, 
+      0, 171,   1,   0,   3,   0, 
+      1,   0,   2,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    100, 105, 102, 102,   0, 171, 
+    171, 171,   1,   0,   3,   0, 
+      1,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     99, 101, 110, 116, 101, 114, 
+     49,   0,  65,   0, 171, 171, 
+      0,   0,   3,   0,   1,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 114,  97, 
+    100, 105, 117, 115,  49,   0, 
+    115, 113,  95, 114,  97, 100, 
+    105, 117, 115,  49,   0,  77, 
+    105,  99, 114, 111, 115, 111, 
+    102, 116,  32,  40,  82,  41, 
+     32,  72,  76,  83,  76,  32, 
+     83, 104,  97, 100, 101, 114, 
+     32,  67, 111, 109, 112, 105, 
+    108, 101, 114,  32,  57,  46, 
+     50,  57,  46,  57,  53,  50, 
+     46,  51,  49,  49,  49,   0, 
+     73,  83,  71,  78, 104,   0, 
+      0,   0,   3,   0,   0,   0, 
+      8,   0,   0,   0,  80,   0, 
+      0,   0,   0,   0,   0,   0, 
       1,   0,   0,   0,   3,   0, 
-      0,   0, 255, 255, 255, 255, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  92,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   3,   0,   0,  92,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+     12,  12,   0,   0,  83,  86, 
+     95,  80, 111, 115, 105, 116, 
+    105, 111, 110,   0,  84,  69, 
+     88,  67,  79,  79,  82,  68, 
+      0, 171, 171, 171,  79,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,  15,   0, 
+      0,   0,  83,  86,  95,  84, 
+     97, 114, 103, 101, 116,   0, 
+    171, 171, 194,  34,   0,   0, 
+      0,   0,   0,   0,  83,  97, 
+    109, 112, 108, 101,  77,  97, 
+    115, 107, 101, 100,  84, 101, 
+    120, 116, 117, 114, 101,   0, 
      36,   4,   0,   0,  68,  88, 
      66,  67, 116, 139,  68,  62, 
      73, 113,  92,   4,  72,  76, 
     225, 161,  30, 132, 222, 233, 
       1,   0,   0,   0,  36,   4, 
       0,   0,   6,   0,   0,   0, 
      56,   0,   0,   0, 248,   0, 
       0,   0, 244,   1,   0,   0, 
@@ -2683,1304 +3620,2339 @@ const BYTE d2deffect[] =
       0,   0,  92,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
       1,   0,   0,   0,  12,   3, 
       0,   0,  83,  86,  95,  80, 
     111, 115, 105, 116, 105, 111, 
     110,   0,  84,  69,  88,  67, 
      79,  79,  82,  68,   0, 171, 
-    171, 171, 184,  32,   0,   0, 
+    171, 171, 114,  42,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   2,   0,   0,   0, 
-      0,   0,   0,   0, 172,   9, 
+      0,   0,   0,   0, 208,   3, 
       0,   0,  68,  88,  66,  67, 
-    110,  68, 159, 211, 251, 173, 
-    118,  80, 154, 213, 185, 171, 
-    243,  23, 113, 100,   1,   0, 
-      0,   0, 172,   9,   0,   0, 
+    145,  96, 208, 189, 244, 147, 
+     57, 205, 242, 133,  35, 176, 
+     39, 143, 121, 235,   1,   0, 
+      0,   0, 208,   3,   0,   0, 
       6,   0,   0,   0,  56,   0, 
-      0,   0, 220,   2,   0,   0, 
-    204,   6,   0,   0,  72,   7, 
-      0,   0,   8,   9,   0,   0, 
-    120,   9,   0,   0,  65, 111, 
-    110,  57, 156,   2,   0,   0, 
-    156,   2,   0,   0,   0,   2, 
-    255, 255, 104,   2,   0,   0, 
-     52,   0,   0,   0,   1,   0, 
-     40,   0,   0,   0,  52,   0, 
-      0,   0,  52,   0,   1,   0, 
-     36,   0,   0,   0,  52,   0, 
-      0,   0,   0,   0,   0,   0, 
-      3,   0,   6,   0,   0,   0, 
-      0,   0,   0,   0,   1,   2, 
-    255, 255,  31,   0,   0,   2, 
-      0,   0,   0, 128,   0,   0, 
-     15, 176,  31,   0,   0,   2, 
-      0,   0,   0, 144,   0,   8, 
-     15, 160,   2,   0,   0,   3, 
-      0,   0,   2, 128,   0,   0, 
-     85, 176,   0,   0,  85, 160, 
+      0,   0, 224,   0,   0,   0, 
+    188,   1,   0,   0,  56,   2, 
+      0,   0,  44,   3,   0,   0, 
+    156,   3,   0,   0,  65, 111, 
+    110,  57, 160,   0,   0,   0, 
+    160,   0,   0,   0,   0,   2, 
+    255, 255, 116,   0,   0,   0, 
+     44,   0,   0,   0,   0,   0, 
+     44,   0,   0,   0,  44,   0, 
+      0,   0,  44,   0,   2,   0, 
+     36,   0,   0,   0,  44,   0, 
+      0,   0,   0,   0,   1,   1, 
+      1,   0,   1,   2, 255, 255, 
+     31,   0,   0,   2,   0,   0, 
+      0, 128,   0,   0,  15, 176, 
+     31,   0,   0,   2,   0,   0, 
+      0, 144,   0,   8,  15, 160, 
+     31,   0,   0,   2,   0,   0, 
+      0, 144,   1,   8,  15, 160, 
       1,   0,   0,   2,   0,   0, 
-      1, 128,   0,   0,   0, 176, 
-      2,   0,   0,   3,   1,   0, 
-      2, 128,   0,   0,  85, 176, 
-      0,   0,   0, 160,   1,   0, 
-      0,   2,   1,   0,   1, 128, 
-      0,   0,   0, 176,  66,   0, 
+      3, 128,   0,   0, 235, 176, 
+     66,   0,   0,   3,   1,   0, 
+     15, 128,   0,   0, 228, 176, 
+      0,   8, 228, 160,  66,   0, 
       0,   3,   0,   0,  15, 128, 
-      0,   0, 228, 128,   0,   8, 
-    228, 160,  66,   0,   0,   3, 
-      1,   0,  15, 128,   1,   0, 
-    228, 128,   0,   8, 228, 160, 
-      5,   0,   0,   3,   0,   0, 
+      0,   0, 228, 128,   1,   8, 
+    228, 160,   5,   0,   0,   3, 
+      0,   0,  15, 128,   0,   0, 
+    255, 128,   1,   0, 228, 128, 
+      1,   0,   0,   2,   0,   8, 
      15, 128,   0,   0, 228, 128, 
-      3,   0,  85, 160,   4,   0, 
-      0,   4,   0,   0,  15, 128, 
-      3,   0,   0, 160,   1,   0, 
-    228, 128,   0,   0, 228, 128, 
-      2,   0,   0,   3,   1,   0, 
-      2, 128,   0,   0,  85, 176, 
-      0,   0, 170, 160,   1,   0, 
-      0,   2,   1,   0,   1, 128, 
-      0,   0,   0, 176,   2,   0, 
-      0,   3,   2,   0,   2, 128, 
-      0,   0,  85, 176,   0,   0, 
-    255, 160,   1,   0,   0,   2, 
-      2,   0,   1, 128,   0,   0, 
-      0, 176,  66,   0,   0,   3, 
-      1,   0,  15, 128,   1,   0, 
-    228, 128,   0,   8, 228, 160, 
-     66,   0,   0,   3,   2,   0, 
-     15, 128,   2,   0, 228, 128, 
-      0,   8, 228, 160,   4,   0, 
-      0,   4,   0,   0,  15, 128, 
-      3,   0, 170, 160,   1,   0, 
-    228, 128,   0,   0, 228, 128, 
-      4,   0,   0,   4,   0,   0, 
-     15, 128,   3,   0, 255, 160, 
-      2,   0, 228, 128,   0,   0, 
-    228, 128,   2,   0,   0,   3, 
-      1,   0,   2, 128,   0,   0, 
-     85, 176,   1,   0,   0, 160, 
-      1,   0,   0,   2,   1,   0, 
-      1, 128,   0,   0,   0, 176, 
-      2,   0,   0,   3,   2,   0, 
-      2, 128,   0,   0,  85, 176, 
-      1,   0,  85, 160,   1,   0, 
-      0,   2,   2,   0,   1, 128, 
-      0,   0,   0, 176,  66,   0, 
-      0,   3,   1,   0,  15, 128, 
-      1,   0, 228, 128,   0,   8, 
-    228, 160,  66,   0,   0,   3, 
-      2,   0,  15, 128,   2,   0, 
-    228, 128,   0,   8, 228, 160, 
-      4,   0,   0,   4,   0,   0, 
-     15, 128,   4,   0,   0, 160, 
-      1,   0, 228, 128,   0,   0, 
-    228, 128,   4,   0,   0,   4, 
-      0,   0,  15, 128,   4,   0, 
-     85, 160,   2,   0, 228, 128, 
-      0,   0, 228, 128,   2,   0, 
-      0,   3,   1,   0,   2, 128, 
-      0,   0,  85, 176,   1,   0, 
-    170, 160,   1,   0,   0,   2, 
-      1,   0,   1, 128,   0,   0, 
-      0, 176,   2,   0,   0,   3, 
-      2,   0,   2, 128,   0,   0, 
-     85, 176,   1,   0, 255, 160, 
-      1,   0,   0,   2,   2,   0, 
-      1, 128,   0,   0,   0, 176, 
-     66,   0,   0,   3,   1,   0, 
-     15, 128,   1,   0, 228, 128, 
-      0,   8, 228, 160,  66,   0, 
-      0,   3,   2,   0,  15, 128, 
-      2,   0, 228, 128,   0,   8, 
-    228, 160,   4,   0,   0,   4, 
-      0,   0,  15, 128,   4,   0, 
-    170, 160,   1,   0, 228, 128, 
-      0,   0, 228, 128,   4,   0, 
-      0,   4,   0,   0,  15, 128, 
-      4,   0, 255, 160,   2,   0, 
-    228, 128,   0,   0, 228, 128, 
-      2,   0,   0,   3,   1,   0, 
-      2, 128,   0,   0,  85, 176, 
-      2,   0,   0, 160,   1,   0, 
-      0,   2,   1,   0,   1, 128, 
-      0,   0,   0, 176,  66,   0, 
-      0,   3,   1,   0,  15, 128, 
-      1,   0, 228, 128,   0,   8, 
-    228, 160,   4,   0,   0,   4, 
-      0,   0,  15, 128,   5,   0, 
-      0, 160,   1,   0, 228, 128, 
-      0,   0, 228, 128,   1,   0, 
-      0,   2,   0,   8,  15, 128, 
-      0,   0, 228, 128, 255, 255, 
-      0,   0,  83,  72,  68,  82, 
-    232,   3,   0,   0,  64,   0, 
-      0,   0, 250,   0,   0,   0, 
-     89,   0,   0,   4,  70, 142, 
-     32,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,  90,   0, 
-      0,   3,   0,  96,  16,   0, 
-      0,   0,   0,   0,  88,  24, 
-      0,   4,   0, 112,  16,   0, 
-      0,   0,   0,   0,  85,  85, 
-      0,   0,  98,  16,   0,   3, 
-     50,  16,  16,   0,   1,   0, 
-      0,   0, 101,   0,   0,   3, 
-    242,  32,  16,   0,   0,   0, 
-      0,   0, 104,   0,   0,   2, 
-      4,   0,   0,   0,  54,   0, 
-      0,   5,  82,   0,  16,   0, 
-      0,   0,   0,   0,   6,  16, 
+    255, 255,   0,   0,  83,  72, 
+     68,  82, 212,   0,   0,   0, 
+     64,   0,   0,   0,  53,   0, 
+      0,   0,  90,   0,   0,   3, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  90,   0,   0,   3, 
+      0,  96,  16,   0,   1,   0, 
+      0,   0,  88,  24,   0,   4, 
+      0, 112,  16,   0,   0,   0, 
+      0,   0,  85,  85,   0,   0, 
+     88,  24,   0,   4,   0, 112, 
      16,   0,   1,   0,   0,   0, 
-      0,   0,   0,   8, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     86,  21,  16,   0,   1,   0, 
-      0,   0, 134, 141,  32,   0, 
-      0,   0,   0,   0,   3,   0, 
-      0,   0,  54,   0,   0,   5, 
-    162,   0,  16,   0,   0,   0, 
-      0,   0,   6,   8,  16,   0, 
-      1,   0,   0,   0,  69,   0, 
-      0,   9, 242,   0,  16,   0, 
-      2,   0,   0,   0, 230,  10, 
-     16,   0,   0,   0,   0,   0, 
-     70, 126,  16,   0,   0,   0, 
-      0,   0,   0,  96,  16,   0, 
-      0,   0,   0,   0,  69,   0, 
-      0,   9, 242,   0,  16,   0, 
-      0,   0,   0,   0,  70,   0, 
+     85,  85,   0,   0,  98,  16, 
+      0,   3,  50,  16,  16,   0, 
+      1,   0,   0,   0,  98,  16, 
+      0,   3, 194,  16,  16,   0, 
+      1,   0,   0,   0, 101,   0, 
+      0,   3, 242,  32,  16,   0, 
+      0,   0,   0,   0, 104,   0, 
+      0,   2,   2,   0,   0,   0, 
+     69,   0,   0,   9, 242,   0, 
      16,   0,   0,   0,   0,   0, 
-     70, 126,  16,   0,   0,   0, 
-      0,   0,   0,  96,  16,   0, 
-      0,   0,   0,   0,  56,   0, 
-      0,   8, 242,   0,  16,   0, 
-      2,   0,   0,   0,  70,  14, 
-     16,   0,   2,   0,   0,   0, 
-     86, 133,  32,   0,   0,   0, 
-      0,   0,   6,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-      6, 128,  32,   0,   0,   0, 
-      0,   0,   6,   0,   0,   0, 
-     70,  14,  16,   0,   0,   0, 
-      0,   0,  70,  14,  16,   0, 
-      2,   0,   0,   0,  54,   0, 
-      0,   5,  82,   0,  16,   0, 
-      1,   0,   0,   0,   6,  16, 
-     16,   0,   1,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   2,   0,   0,   0, 
-     70,   0,  16,   0,   1,   0, 
+     70,  16,  16,   0,   1,   0, 
       0,   0,  70, 126,  16,   0, 
       0,   0,   0,   0,   0,  96, 
      16,   0,   0,   0,   0,   0, 
      69,   0,   0,   9, 242,   0, 
      16,   0,   1,   0,   0,   0, 
-    230,  10,  16,   0,   1,   0, 
+    230,  26,  16,   0,   1,   0, 
       0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-    166, 138,  32,   0,   0,   0, 
-      0,   0,   6,   0,   0,   0, 
-     70,  14,  16,   0,   2,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,  50,   0, 
-      0,  10, 242,   0,  16,   0, 
-      0,   0,   0,   0, 246, 143, 
-     32,   0,   0,   0,   0,   0, 
-      6,   0,   0,   0,  70,  14, 
-     16,   0,   1,   0,   0,   0, 
-     70,  14,  16,   0,   0,   0, 
-      0,   0,  54,   0,   0,   5, 
-     82,   0,  16,   0,   1,   0, 
-      0,   0,   6,  16,  16,   0, 
-      1,   0,   0,   0,   0,   0, 
-      0,   8, 242,   0,  16,   0, 
-      2,   0,   0,   0,  86,  21, 
+      1,   0,   0,   0,   0,  96, 
      16,   0,   1,   0,   0,   0, 
-    134, 141,  32,   0,   0,   0, 
-      0,   0,   4,   0,   0,   0, 
-     54,   0,   0,   5, 162,   0, 
-     16,   0,   1,   0,   0,   0, 
-      6,   8,  16,   0,   2,   0, 
-      0,   0,  69,   0,   0,   9, 
-    242,   0,  16,   0,   3,   0, 
-      0,   0,  70,   0,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   0,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  69,   0,   0,   9, 
-    242,   0,  16,   0,   1,   0, 
-      0,   0, 230,  10,  16,   0, 
-      1,   0,   0,   0,  70, 126, 
-     16,   0,   0,   0,   0,   0, 
-      0,  96,  16,   0,   0,   0, 
-      0,   0,  50,   0,   0,  10, 
-    242,   0,  16,   0,   0,   0, 
-      0,   0,   6, 128,  32,   0, 
-      0,   0,   0,   0,   7,   0, 
-      0,   0,  70,  14,  16,   0, 
-      3,   0,   0,   0,  70,  14, 
-     16,   0,   0,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
+     56,   0,   0,   7, 242,  32, 
      16,   0,   0,   0,   0,   0, 
-     86, 133,  32,   0,   0,   0, 
-      0,   0,   7,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,  54,   0, 
-      0,   5,  82,   0,  16,   0, 
-      2,   0,   0,   0,   6,  16, 
-     16,   0,   1,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,   0,  16,   0,   2,   0, 
-      0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   2,   0,   0,   0, 
-    230,  10,  16,   0,   2,   0, 
-      0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     50,   0,   0,  10, 242,   0, 
-     16,   0,   0,   0,   0,   0, 
-    166, 138,  32,   0,   0,   0, 
-      0,   0,   7,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,  50,   0, 
-      0,  10, 242,   0,  16,   0, 
-      0,   0,   0,   0, 246, 143, 
-     32,   0,   0,   0,   0,   0, 
-      7,   0,   0,   0,  70,  14, 
-     16,   0,   2,   0,   0,   0, 
      70,  14,  16,   0,   0,   0, 
-      0,   0,   0,   0,   0,   8, 
-     34,   0,  16,   0,   1,   0, 
-      0,   0,  26,  16,  16,   0, 
-      1,   0,   0,   0,  10, 128, 
-     32,   0,   0,   0,   0,   0, 
-      5,   0,   0,   0,  54,   0, 
-      0,   5,  18,   0,  16,   0, 
-      1,   0,   0,   0,  10,  16, 
-     16,   0,   1,   0,   0,   0, 
-     69,   0,   0,   9, 242,   0, 
-     16,   0,   1,   0,   0,   0, 
-     70,   0,  16,   0,   1,   0, 
-      0,   0,  70, 126,  16,   0, 
-      0,   0,   0,   0,   0,  96, 
-     16,   0,   0,   0,   0,   0, 
-     50,   0,   0,  10, 242,  32, 
-     16,   0,   0,   0,   0,   0, 
-      6, 128,  32,   0,   0,   0, 
-      0,   0,   8,   0,   0,   0, 
-     70,  14,  16,   0,   1,   0, 
-      0,   0,  70,  14,  16,   0, 
-      0,   0,   0,   0,  62,   0, 
+      0,   0, 246,  15,  16,   0, 
+      1,   0,   0,   0,  62,   0, 
       0,   1,  83,  84,  65,  84, 
-    116,   0,   0,   0,  29,   0, 
-      0,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   2,   0, 
-      0,   0,   4,   0,   0,   0, 
+    116,   0,   0,   0,   4,   0, 
+      0,   0,   2,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   1,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      9,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   9,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     82,  68,  69,  70, 184,   1, 
-      0,   0,   1,   0,   0,   0, 
-    148,   0,   0,   0,   3,   0, 
+      2,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     82,  68,  69,  70, 236,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   4,   0, 
       0,   0,  28,   0,   0,   0, 
       0,   4, 255, 255,   0,   1, 
-      0,   0, 132,   1,   0,   0, 
-    124,   0,   0,   0,   3,   0, 
+      0,   0, 187,   0,   0,   0, 
+    156,   0,   0,   0,   3,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
-      0,   0, 139,   0,   0,   0, 
-      2,   0,   0,   0,   5,   0, 
-      0,   0,   4,   0,   0,   0, 
-    255, 255, 255, 255,   0,   0, 
-      0,   0,   1,   0,   0,   0, 
-     12,   0,   0,   0, 143,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      0,   0, 165,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
-      0,   0,   0,   0,   0,   0, 
-    115,  83, 104,  97, 100, 111, 
-    119,  83,  97, 109, 112, 108, 
-    101, 114,   0, 116, 101, 120, 
-      0,  99,  98,  49,   0, 171, 
-    143,   0,   0,   0,   4,   0, 
-      0,   0, 172,   0,   0,   0, 
-    160,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     12,   1,   0,   0,   0,   0, 
-      0,   0,  48,   0,   0,   0, 
-      0,   0,   0,   0,  28,   1, 
-      0,   0,   0,   0,   0,   0, 
-     44,   1,   0,   0,  48,   0, 
-      0,   0,  48,   0,   0,   0, 
-      2,   0,   0,   0,  60,   1, 
-      0,   0,   0,   0,   0,   0, 
-     76,   1,   0,   0,  96,   0, 
-      0,   0,  48,   0,   0,   0, 
-      2,   0,   0,   0,  88,   1, 
-      0,   0,   0,   0,   0,   0, 
-    104,   1,   0,   0, 144,   0, 
-      0,   0,  16,   0,   0,   0, 
-      0,   0,   0,   0, 116,   1, 
-      0,   0,   0,   0,   0,   0, 
-     66, 108, 117, 114,  79, 102, 
-    102, 115, 101, 116, 115,  72, 
-      0, 171, 171, 171,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  66, 108, 117, 114, 
-     79, 102, 102, 115, 101, 116, 
-    115,  86,   0, 171, 171, 171, 
-      1,   0,   3,   0,   1,   0, 
-      4,   0,   3,   0,   0,   0, 
-      0,   0,   0,   0,  66, 108, 
-    117, 114,  87, 101, 105, 103, 
-    104, 116, 115,   0,   1,   0, 
-      3,   0,   1,   0,   4,   0, 
-      3,   0,   0,   0,   0,   0, 
-      0,   0,  83, 104,  97, 100, 
-    111, 119,  67, 111, 108, 111, 
-    114,   0,   1,   0,   3,   0, 
-      1,   0,   4,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-     77, 105,  99, 114, 111, 115, 
-    111, 102, 116,  32,  40,  82, 
-     41,  32,  72,  76,  83,  76, 
-     32,  83, 104,  97, 100, 101, 
-    114,  32,  67, 111, 109, 112, 
-    105, 108, 101, 114,  32,  57, 
-     46,  50,  57,  46,  57,  53, 
-     50,  46,  51,  49,  49,  49, 
-      0, 171, 171, 171,  73,  83, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0, 178,   0, 
+      0,   0,   2,   0,   0,   0, 
+      5,   0,   0,   0,   4,   0, 
+      0,   0, 255, 255, 255, 255, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,  12,   0,   0,   0, 
+    182,   0,   0,   0,   2,   0, 
+      0,   0,   5,   0,   0,   0, 
+      4,   0,   0,   0, 255, 255, 
+    255, 255,   1,   0,   0,   0, 
+      1,   0,   0,   0,  12,   0, 
+      0,   0, 115,  83,  97, 109, 
+    112, 108, 101, 114,   0, 115, 
+     77,  97, 115, 107,  83,  97, 
+    109, 112, 108, 101, 114,   0, 
+    116, 101, 120,   0, 109,  97, 
+    115, 107,   0,  77, 105,  99, 
+    114, 111, 115, 111, 102, 116, 
+     32,  40,  82,  41,  32,  72, 
+     76,  83,  76,  32,  83, 104, 
+     97, 100, 101, 114,  32,  67, 
+    111, 109, 112, 105, 108, 101, 
+    114,  32,  57,  46,  50,  57, 
+     46,  57,  53,  50,  46,  51, 
+     49,  49,  49,   0,  73,  83, 
      71,  78, 104,   0,   0,   0, 
       3,   0,   0,   0,   8,   0, 
       0,   0,  80,   0,   0,   0, 
       0,   0,   0,   0,   1,   0, 
       0,   0,   3,   0,   0,   0, 
       0,   0,   0,   0,  15,   0, 
       0,   0,  92,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
       1,   0,   0,   0,   3,   3, 
       0,   0,  92,   0,   0,   0, 
       1,   0,   0,   0,   0,   0, 
       0,   0,   3,   0,   0,   0, 
-      1,   0,   0,   0,  12,   0, 
+      1,   0,   0,   0,  12,  12, 
       0,   0,  83,  86,  95,  80, 
     111, 115, 105, 116, 105, 111, 
     110,   0,  84,  69,  88,  67, 
      79,  79,  82,  68,   0, 171, 
     171, 171,  79,  83,  71,  78, 
      44,   0,   0,   0,   1,   0, 
       0,   0,   8,   0,   0,   0, 
      32,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       3,   0,   0,   0,   0,   0, 
       0,   0,  15,   0,   0,   0, 
      83,  86,  95,  84,  97, 114, 
     103, 101, 116,   0, 171, 171, 
-    244,  36,   0,   0,   0,   0, 
-      0,   0,  80,  50,   0,   4, 
-      0,   0,   0,   1,   0,   0, 
+    174,  46,   0,   0,   0,   0, 
+      0,   0,  83,  97, 109, 112, 
+    108, 101,  84, 101, 120, 116, 
+    117, 114, 101,  87, 105, 116, 
+    104,  83, 104,  97, 100, 111, 
+    119,   0,   4,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+    128,  63,   1,   0,   0,   0, 
+      0,   0, 128,  63,   1,   0, 
+      0,   0,   0,   0, 128,  63, 
+      1,   0,   0,   0,   0,   0, 
+    128,  63,   1,   0,   0,   0, 
+      3,   0,   0,   0, 255, 255, 
+    255, 255,  36,   4,   0,   0, 
+     68,  88,  66,  67, 116, 139, 
+     68,  62,  73, 113,  92,   4, 
+     72,  76, 225, 161,  30, 132, 
+    222, 233,   1,   0,   0,   0, 
+     36,   4,   0,   0,   6,   0, 
+      0,   0,  56,   0,   0,   0, 
+    248,   0,   0,   0, 244,   1, 
+      0,   0, 112,   2,   0,   0, 
+    128,   3,   0,   0, 180,   3, 
+      0,   0,  65, 111, 110,  57, 
+    184,   0,   0,   0, 184,   0, 
+      0,   0,   0,   2, 254, 255, 
+    132,   0,   0,   0,  52,   0, 
+      0,   0,   1,   0,  36,   0, 
+      0,   0,  48,   0,   0,   0, 
+     48,   0,   0,   0,  36,   0, 
+      1,   0,  48,   0,   0,   0, 
+      0,   0,   3,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   2, 254, 255, 
+     81,   0,   0,   5,   4,   0, 
+     15, 160,   0,   0,   0,   0, 
+      0,   0, 128,  63,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     31,   0,   0,   2,   5,   0, 
+      0, 128,   0,   0,  15, 144, 
+      4,   0,   0,   4,   0,   0, 
+      3, 224,   0,   0, 228, 144, 
+      2,   0, 238, 160,   2,   0, 
+    228, 160,   4,   0,   0,   4, 
+      0,   0,  12, 224,   0,   0, 
+     20, 144,   3,   0, 180, 160, 
+      3,   0,  20, 160,   4,   0, 
+      0,   4,   0,   0,   3, 128, 
+      0,   0, 228, 144,   1,   0, 
+    238, 160,   1,   0, 228, 160, 
+      2,   0,   0,   3,   0,   0, 
+      3, 192,   0,   0, 228, 128, 
+      0,   0, 228, 160,   1,   0, 
+      0,   2,   0,   0,  12, 192, 
+      4,   0,  68, 160, 255, 255, 
+      0,   0,  83,  72,  68,  82, 
+    244,   0,   0,   0,  64,   0, 
+      1,   0,  61,   0,   0,   0, 
+     89,   0,   0,   4,  70, 142, 
+     32,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,  95,   0, 
+      0,   3,  50,  16,  16,   0, 
+      0,   0,   0,   0, 103,   0, 
+      0,   4, 242,  32,  16,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0, 101,   0,   0,   3, 
+     50,  32,  16,   0,   1,   0, 
+      0,   0, 101,   0,   0,   3, 
+    194,  32,  16,   0,   1,   0, 
+      0,   0,  50,   0,   0,  11, 
+     50,  32,  16,   0,   0,   0, 
+      0,   0,  70,  16,  16,   0, 
+      0,   0,   0,   0, 230, 138, 
+     32,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  70, 128, 
+     32,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  54,   0, 
+      0,   8, 194,  32,  16,   0, 
+      0,   0,   0,   0,   2,  64, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0, 128,  63, 
+     50,   0,   0,  11,  50,  32, 
+     16,   0,   1,   0,   0,   0, 
+     70,  16,  16,   0,   0,   0, 
+      0,   0, 230, 138,  32,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,  70, 128,  32,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,  50,   0,   0,  11, 
+    194,  32,  16,   0,   1,   0, 
+      0,   0,   6,  20,  16,   0, 
+      0,   0,   0,   0, 166, 142, 
+     32,   0,   0,   0,   0,   0, 
+      2,   0,   0,   0,   6, 132, 
+     32,   0,   0,   0,   0,   0, 
+      2,   0,   0,   0,  62,   0, 
+      0,   1,  83,  84,  65,  84, 
+    116,   0,   0,   0,   5,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   4,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     82,  68,  69,  70,   8,   1, 
+      0,   0,   1,   0,   0,   0, 
+     64,   0,   0,   0,   1,   0, 
+      0,   0,  28,   0,   0,   0, 
+      0,   4, 254, 255,   0,   1, 
+      0,   0, 212,   0,   0,   0, 
+     60,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,  99,  98,  48,   0, 
+     60,   0,   0,   0,   3,   0, 
+      0,   0,  88,   0,   0,   0, 
+     48,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    160,   0,   0,   0,   0,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 172,   0, 
+      0,   0,   0,   0,   0,   0, 
+    188,   0,   0,   0,  16,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 172,   0, 
+      0,   0,   0,   0,   0,   0, 
+    198,   0,   0,   0,  32,   0, 
+      0,   0,  16,   0,   0,   0, 
+      2,   0,   0,   0, 172,   0, 
+      0,   0,   0,   0,   0,   0, 
+     81, 117,  97, 100,  68, 101, 
+    115,  99,   0, 171, 171, 171, 
+      1,   0,   3,   0,   1,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  84, 101, 
+    120,  67, 111, 111, 114, 100, 
+    115,   0,  77,  97, 115, 107, 
+     84, 101, 120,  67, 111, 111, 
+    114, 100, 115,   0,  77, 105, 
+     99, 114, 111, 115, 111, 102, 
+    116,  32,  40,  82,  41,  32, 
+     72,  76,  83,  76,  32,  83, 
+    104,  97, 100, 101, 114,  32, 
+     67, 111, 109, 112, 105, 108, 
+    101, 114,  32,  57,  46,  50, 
+     57,  46,  57,  53,  50,  46, 
+     51,  49,  49,  49,   0, 171, 
+    171, 171,  73,  83,  71,  78, 
+     44,   0,   0,   0,   1,   0, 
+      0,   0,   8,   0,   0,   0, 
+     32,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   7,   3,   0,   0, 
+     80,  79,  83,  73,  84,  73, 
+     79,  78,   0, 171, 171, 171, 
+     79,  83,  71,  78, 104,   0, 
+      0,   0,   3,   0,   0,   0, 
+      8,   0,   0,   0,  80,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  92,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,  12,   0,   0,  92,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+     12,   3,   0,   0,  83,  86, 
+     95,  80, 111, 115, 105, 116, 
+    105, 111, 110,   0,  84,  69, 
+     88,  67,  79,  79,  82,  68, 
+      0, 171, 171, 171, 210,  50, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   2,   0, 
+      0,   0,   0,   0,   0,   0, 
+    232,   9,   0,   0,  68,  88, 
+     66,  67,  45,  80,  33,   8, 
+      5,  16, 134, 134, 115,  16, 
+    129,  43, 103, 216, 255, 210, 
+      1,   0,   0,   0, 232,   9, 
+      0,   0,   6,   0,   0,   0, 
+     56,   0,   0,   0, 248,   2, 
+      0,   0,   8,   7,   0,   0, 
+    132,   7,   0,   0,  68,   9, 
+      0,   0, 180,   9,   0,   0, 
+     65, 111, 110,  57, 184,   2, 
+      0,   0, 184,   2,   0,   0, 
+      0,   2, 255, 255, 120,   2, 
+      0,   0,  64,   0,   0,   0, 
+      2,   0,  40,   0,   0,   0, 
+     64,   0,   0,   0,  64,   0, 
+      1,   0,  36,   0,   0,   0, 
+     64,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   6,   0,   4,   0, 
+      3,   0,   0,   0,   0,   0, 
+      1,   2, 255, 255,  31,   0, 
+      0,   2,   0,   0,   0, 128, 
+      0,   0,  15, 176,  31,   0, 
+      0,   2,   0,   0,   0, 144, 
+      0,   8,  15, 160,   2,   0, 
+      0,   3,   0,   0,   1, 128, 
+      0,   0,   0, 176,   0,   0, 
+     85, 160,   1,   0,   0,   2, 
+      0,   0,   2, 128,   0,   0, 
+     85, 176,   2,   0,   0,   3, 
+      1,   0,   1, 128,   0,   0, 
+      0, 176,   0,   0,   0, 160, 
+      1,   0,   0,   2,   1,   0, 
+      2, 128,   0,   0,  85, 176, 
+     66,   0,   0,   3,   0,   0, 
+     15, 128,   0,   0, 228, 128, 
+      0,   8, 228, 160,  66,   0, 
+      0,   3,   1,   0,  15, 128, 
+      1,   0, 228, 128,   0,   8, 
+    228, 160,   5,   0,   0,   3, 
+      0,   0,   1, 128,   0,   0, 
+    255, 128,   3,   0,  85, 160, 
+      4,   0,   0,   4,   0,   0, 
+      1, 128,   3,   0,   0, 160, 
+      1,   0, 255, 128,   0,   0, 
+      0, 128,   2,   0,   0,   3, 
+      1,   0,   1, 128,   0,   0, 
+      0, 176,   0,   0, 170, 160, 
+      1,   0,   0,   2,   1,   0, 
+      2, 128,   0,   0,  85, 176, 
+      2,   0,   0,   3,   2,   0, 
+      1, 128,   0,   0,   0, 176, 
+      0,   0, 255, 160,   1,   0, 
+      0,   2,   2,   0,   2, 128, 
+      0,   0,  85, 176,  66,   0, 
+      0,   3,   1,   0,  15, 128, 
+      1,   0, 228, 128,   0,   8, 
+    228, 160,  66,   0,   0,   3, 
+      2,   0,  15, 128,   2,   0, 
+    228, 128,   0,   8, 228, 160, 
+      4,   0,   0,   4,   0,   0, 
+      1, 128,   3,   0, 170, 160, 
+      1,   0, 255, 128,   0,   0, 
+      0, 128,   4,   0,   0,   4, 
+      0,   0,   1, 128,   3,   0, 
+    255, 160,   2,   0, 255, 128, 
+      0,   0,   0, 128,   2,   0, 
+      0,   3,   1,   0,   1, 128, 
+      0,   0,   0, 176,   1,   0, 
+      0, 160,   1,   0,   0,   2, 
+      1,   0,   2, 128,   0,   0, 
+     85, 176,   2,   0,   0,   3, 
+      2,   0,   1, 128,   0,   0, 
+      0, 176,   1,   0,  85, 160, 
+      1,   0,   0,   2,   2,   0, 
+      2, 128,   0,   0,  85, 176, 
+     66,   0,   0,   3,   1,   0, 
+     15, 128,   1,   0, 228, 128, 
+      0,   8, 228, 160,  66,   0, 
+      0,   3,   2,   0,  15, 128, 
+      2,   0, 228, 128,   0,   8, 
+    228, 160,   4,   0,   0,   4, 
+      0,   0,   1, 128,   4,   0, 
+      0, 160,   1,   0, 255, 128, 
+      0,   0,   0, 128,   4,   0, 
+      0,   4,   0,   0,   1, 128, 
+      4,   0,  85, 160,   2,   0, 
+    255, 128,   0,   0,   0, 128, 
+      2,   0,   0,   3,   1,   0, 
+      1, 128,   0,   0,   0, 176, 
+      1,   0, 170, 160,   1,   0, 
+      0,   2,   1,   0,   2, 128, 
+      0,   0,  85, 176,   2,   0, 
+      0,   3,   2,   0,   1, 128, 
+      0,   0,   0, 176,   1,   0, 
+    255, 160,   1,   0,   0,   2, 
+      2,   0,   2, 128,   0,   0, 
+     85, 176,  66,   0,   0,   3, 
+      1,   0,  15, 128,   1,   0, 
+    228, 128,   0,   8, 228, 160, 
+     66,   0,   0,   3,   2,   0, 
+     15, 128,   2,   0, 228, 128, 
+      0,   8, 228, 160,   4,   0, 
+      0,   4,   0,   0,   1, 128, 
+      4,   0, 170, 160,   1,   0, 
+    255, 128,   0,   0,   0, 128, 
+      4,   0,   0,   4,   0,   0, 
+      1, 128,   4,   0, 255, 160, 
+      2,   0, 255, 128,   0,   0, 
+      0, 128,   2,   0,   0,   3, 
+      1,   0,   1, 128,   0,   0, 
+      0, 176,   2,   0,   0, 160, 
+      1,   0,   0,   2,   1,   0, 
+      2, 128,   0,   0,  85, 176, 
+     66,   0,   0,   3,   1,   0, 
+     15, 128,   1,   0, 228, 128, 
+      0,   8, 228, 160,   4,   0, 
+      0,   4,   0,   0,   1, 128, 
+      5,   0,   0, 160,   1,   0, 
+    255, 128,   0,   0,   0, 128, 
+      5,   0,   0,   3,   0,   0, 
+     15, 128,   0,   0,   0, 128, 
+      6,   0, 228, 160,   1,   0, 
+      0,   2,   0,   8,  15, 128, 
+      0,   0, 228, 128, 255, 255, 
+      0,   0,  83,  72,  68,  82, 
+      8,   4,   0,   0,  64,   0, 
+      0,   0,   2,   1,   0,   0, 
+     89,   0,   0,   4,  70, 142, 
+     32,   0,   0,   0,   0,   0, 
+     10,   0,   0,   0,  90,   0, 
+      0,   3,   0,  96,  16,   0, 
+      0,   0,   0,   0,  88,  24, 
+      0,   4,   0, 112,  16,   0, 
+      0,   0,   0,   0,  85,  85, 
+      0,   0,  98,  16,   0,   3, 
+     50,  16,  16,   0,   1,   0, 
+      0,   0, 101,   0,   0,   3, 
+    242,  32,  16,   0,   0,   0, 
+      0,   0, 104,   0,   0,   2, 
+      4,   0,   0,   0,   0,   0, 
+      0,   8, 242,   0,  16,   0, 
+      0,   0,   0,   0,   6,  16, 
+     16,   0,   1,   0,   0,   0, 
+     38, 135,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     54,   0,   0,   5,  82,   0, 
+     16,   0,   1,   0,   0,   0, 
+     86,   7,  16,   0,   0,   0, 
+      0,   0,  54,   0,   0,   5, 
+    162,   0,  16,   0,   1,   0, 
+      0,   0,  86,  21,  16,   0, 
+      1,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      2,   0,   0,   0, 230,  10, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      1,   0,   0,   0,  70,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  56,   0, 
+      0,   8,  18,   0,  16,   0, 
+      1,   0,   0,   0,  58,   0, 
+     16,   0,   2,   0,   0,   0, 
+     26, 128,  32,   0,   0,   0, 
+      0,   0,   6,   0,   0,   0, 
+     50,   0,   0,  10,  18,   0, 
+     16,   0,   1,   0,   0,   0, 
+     10, 128,  32,   0,   0,   0, 
+      0,   0,   6,   0,   0,   0, 
+     58,   0,  16,   0,   1,   0, 
+      0,   0,  10,   0,  16,   0, 
+      1,   0,   0,   0,  54,   0, 
+      0,   5, 162,   0,  16,   0, 
+      0,   0,   0,   0,  86,  21, 
+     16,   0,   1,   0,   0,   0, 
+     69,   0,   0,   9, 242,   0, 
+     16,   0,   2,   0,   0,   0, 
+     70,   0,  16,   0,   0,   0, 
+      0,   0,  70, 126,  16,   0, 
+      0,   0,   0,   0,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     69,   0,   0,   9, 242,   0, 
+     16,   0,   0,   0,   0,   0, 
+    230,  10,  16,   0,   0,   0, 
+      0,   0,  70, 126,  16,   0, 
+      0,   0,   0,   0,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     50,   0,   0,  10,  18,   0, 
+     16,   0,   0,   0,   0,   0, 
+     42, 128,  32,   0,   0,   0, 
+      0,   0,   6,   0,   0,   0, 
+     58,   0,  16,   0,   2,   0, 
+      0,   0,  10,   0,  16,   0, 
+      1,   0,   0,   0,  50,   0, 
+      0,  10,  18,   0,  16,   0, 
+      0,   0,   0,   0,  58, 128, 
+     32,   0,   0,   0,   0,   0, 
+      6,   0,   0,   0,  58,   0, 
+     16,   0,   0,   0,   0,   0, 
+     10,   0,  16,   0,   0,   0, 
+      0,   0,   0,   0,   0,   8, 
+    242,   0,  16,   0,   1,   0, 
+      0,   0,   6,  16,  16,   0, 
+      1,   0,   0,   0,  38, 135, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  54,   0, 
+      0,   5,  82,   0,  16,   0, 
+      2,   0,   0,   0,  86,   7, 
+     16,   0,   1,   0,   0,   0, 
+     54,   0,   0,   5, 162,   0, 
+     16,   0,   2,   0,   0,   0, 
+     86,  21,  16,   0,   1,   0, 
+      0,   0,  69,   0,   0,   9, 
+    242,   0,  16,   0,   3,   0, 
+      0,   0,  70,   0,  16,   0, 
+      2,   0,   0,   0,  70, 126, 
+     16,   0,   0,   0,   0,   0, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  69,   0,   0,   9, 
+    242,   0,  16,   0,   2,   0, 
+      0,   0, 230,  10,  16,   0, 
+      2,   0,   0,   0,  70, 126, 
+     16,   0,   0,   0,   0,   0, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  50,   0,   0,  10, 
+     18,   0,  16,   0,   0,   0, 
+      0,   0,  10, 128,  32,   0, 
+      0,   0,   0,   0,   7,   0, 
+      0,   0,  58,   0,  16,   0, 
+      3,   0,   0,   0,  10,   0, 
+     16,   0,   0,   0,   0,   0, 
+     50,   0,   0,  10,  18,   0, 
+     16,   0,   0,   0,   0,   0, 
+     26, 128,  32,   0,   0,   0, 
+      0,   0,   7,   0,   0,   0, 
+     58,   0,  16,   0,   2,   0, 
+      0,   0,  10,   0,  16,   0, 
+      0,   0,   0,   0,  54,   0, 
+      0,   5, 162,   0,  16,   0, 
+      1,   0,   0,   0,  86,  21, 
+     16,   0,   1,   0,   0,   0, 
+     69,   0,   0,   9, 242,   0, 
+     16,   0,   2,   0,   0,   0, 
+     70,   0,  16,   0,   1,   0, 
+      0,   0,  70, 126,  16,   0, 
+      0,   0,   0,   0,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     69,   0,   0,   9, 242,   0, 
+     16,   0,   1,   0,   0,   0, 
+    230,  10,  16,   0,   1,   0, 
+      0,   0,  70, 126,  16,   0, 
+      0,   0,   0,   0,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     50,   0,   0,  10,  18,   0, 
+     16,   0,   0,   0,   0,   0, 
+     42, 128,  32,   0,   0,   0, 
+      0,   0,   7,   0,   0,   0, 
+     58,   0,  16,   0,   2,   0, 
+      0,   0,  10,   0,  16,   0, 
+      0,   0,   0,   0,  50,   0, 
+      0,  10,  18,   0,  16,   0, 
+      0,   0,   0,   0,  58, 128, 
+     32,   0,   0,   0,   0,   0, 
+      7,   0,   0,   0,  58,   0, 
+     16,   0,   1,   0,   0,   0, 
+     10,   0,  16,   0,   0,   0, 
+      0,   0,   0,   0,   0,   8, 
+     18,   0,  16,   0,   1,   0, 
+      0,   0,  10,  16,  16,   0, 
+      1,   0,   0,   0,  10, 128, 
+     32,   0,   0,   0,   0,   0, 
+      2,   0,   0,   0,  54,   0, 
+      0,   5,  34,   0,  16,   0, 
+      1,   0,   0,   0,  26,  16, 
+     16,   0,   1,   0,   0,   0, 
+     69,   0,   0,   9, 242,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70,   0,  16,   0,   1,   0, 
+      0,   0,  70, 126,  16,   0, 
+      0,   0,   0,   0,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     50,   0,   0,  10,  18,   0, 
+     16,   0,   0,   0,   0,   0, 
+     10, 128,  32,   0,   0,   0, 
+      0,   0,   8,   0,   0,   0, 
+     58,   0,  16,   0,   1,   0, 
+      0,   0,  10,   0,  16,   0, 
+      0,   0,   0,   0,  56,   0, 
+      0,   8, 242,  32,  16,   0, 
+      0,   0,   0,   0,   6,   0, 
+     16,   0,   0,   0,   0,   0, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   9,   0,   0,   0, 
+     62,   0,   0,   1,  83,  84, 
+     65,  84, 116,   0,   0,   0, 
+     30,   0,   0,   0,   4,   0, 
+      0,   0,   0,   0,   0,   0, 
+      2,   0,   0,   0,   5,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   9,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   9,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  82,  68,  69,  70, 
+    184,   1,   0,   0,   1,   0, 
+      0,   0, 148,   0,   0,   0, 
+      3,   0,   0,   0,  28,   0, 
+      0,   0,   0,   4, 255, 255, 
+      0,   1,   0,   0, 132,   1, 
+      0,   0, 124,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0, 139,   0, 
+      0,   0,   2,   0,   0,   0, 
+      5,   0,   0,   0,   4,   0, 
+      0,   0, 255, 255, 255, 255, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,  12,   0,   0,   0, 
+    143,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0, 115,  83, 104,  97, 
+    100, 111, 119,  83,  97, 109, 
+    112, 108, 101, 114,   0, 116, 
+    101, 120,   0,  99,  98,  49, 
+      0, 171, 143,   0,   0,   0, 
+      4,   0,   0,   0, 172,   0, 
+      0,   0, 160,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  12,   1,   0,   0, 
+      0,   0,   0,   0,  48,   0, 
+      0,   0,   2,   0,   0,   0, 
+     28,   1,   0,   0,   0,   0, 
+      0,   0,  44,   1,   0,   0, 
+     48,   0,   0,   0,  48,   0, 
+      0,   0,   0,   0,   0,   0, 
+     60,   1,   0,   0,   0,   0, 
+      0,   0,  76,   1,   0,   0, 
+     96,   0,   0,   0,  48,   0, 
+      0,   0,   2,   0,   0,   0, 
+     88,   1,   0,   0,   0,   0, 
+      0,   0, 104,   1,   0,   0, 
+    144,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    116,   1,   0,   0,   0,   0, 
+      0,   0,  66, 108, 117, 114, 
+     79, 102, 102, 115, 101, 116, 
+    115,  72,   0, 171, 171, 171, 
+      1,   0,   3,   0,   1,   0, 
+      4,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,  66, 108, 
+    117, 114,  79, 102, 102, 115, 
+    101, 116, 115,  86,   0, 171, 
+    171, 171,   1,   0,   3,   0, 
+      1,   0,   4,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     66, 108, 117, 114,  87, 101, 
+    105, 103, 104, 116, 115,   0, 
+      1,   0,   3,   0,   1,   0, 
+      4,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,  83, 104, 
+     97, 100, 111, 119,  67, 111, 
+    108, 111, 114,   0,   1,   0, 
+      3,   0,   1,   0,   4,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  77, 105,  99, 114, 
+    111, 115, 111, 102, 116,  32, 
+     40,  82,  41,  32,  72,  76, 
+     83,  76,  32,  83, 104,  97, 
+    100, 101, 114,  32,  67, 111, 
+    109, 112, 105, 108, 101, 114, 
+     32,  57,  46,  50,  57,  46, 
+     57,  53,  50,  46,  51,  49, 
+     49,  49,   0, 171, 171, 171, 
+     73,  83,  71,  78, 104,   0, 
+      0,   0,   3,   0,   0,   0, 
+      8,   0,   0,   0,  80,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  92,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   3,   0,   0,  92,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   1,   0,   0,   0, 
+     12,   0,   0,   0,  83,  86, 
+     95,  80, 111, 115, 105, 116, 
+    105, 111, 110,   0,  84,  69, 
+     88,  67,  79,  79,  82,  68, 
+      0, 171, 171, 171,  79,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,  15,   0, 
+      0,   0,  83,  86,  95,  84, 
+     97, 114, 103, 101, 116,   0, 
+    171, 171,  14,  55,   0,   0, 
+      0,   0,   0,   0,   4,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0, 128,  63,   1,   0, 
+      0,   0,   0,   0, 128,  63, 
+      1,   0,   0,   0,   0,   0, 
+    128,  63,   1,   0,   0,   0, 
+      0,   0, 128,  63,   1,   0, 
+      0,   0,   3,   0,   0,   0, 
+    255, 255, 255, 255,  36,   4, 
+      0,   0,  68,  88,  66,  67, 
+    116, 139,  68,  62,  73, 113, 
+     92,   4,  72,  76, 225, 161, 
+     30, 132, 222, 233,   1,   0, 
+      0,   0,  36,   4,   0,   0, 
+      6,   0,   0,   0,  56,   0, 
+      0,   0, 248,   0,   0,   0, 
+    244,   1,   0,   0, 112,   2, 
+      0,   0, 128,   3,   0,   0, 
+    180,   3,   0,   0,  65, 111, 
+    110,  57, 184,   0,   0,   0, 
+    184,   0,   0,   0,   0,   2, 
+    254, 255, 132,   0,   0,   0, 
+     52,   0,   0,   0,   1,   0, 
+     36,   0,   0,   0,  48,   0, 
+      0,   0,  48,   0,   0,   0, 
+     36,   0,   1,   0,  48,   0, 
+      0,   0,   0,   0,   3,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   2, 
+    254, 255,  81,   0,   0,   5, 
+      4,   0,  15, 160,   0,   0, 
+      0,   0,   0,   0, 128,  63, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  31,   0,   0,   2, 
+      5,   0,   0, 128,   0,   0, 
+     15, 144,   4,   0,   0,   4, 
+      0,   0,   3, 224,   0,   0, 
+    228, 144,   2,   0, 238, 160, 
+      2,   0, 228, 160,   4,   0, 
+      0,   4,   0,   0,  12, 224, 
+      0,   0,  20, 144,   3,   0, 
+    180, 160,   3,   0,  20, 160, 
+      4,   0,   0,   4,   0,   0, 
+      3, 128,   0,   0, 228, 144, 
+      1,   0, 238, 160,   1,   0, 
+    228, 160,   2,   0,   0,   3, 
+      0,   0,   3, 192,   0,   0, 
+    228, 128,   0,   0, 228, 160, 
+      1,   0,   0,   2,   0,   0, 
+     12, 192,   4,   0,  68, 160, 
+    255, 255,   0,   0,  83,  72, 
+     68,  82, 244,   0,   0,   0, 
+     64,   0,   1,   0,  61,   0, 
+      0,   0,  89,   0,   0,   4, 
+     70, 142,  32,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+     95,   0,   0,   3,  50,  16, 
+     16,   0,   0,   0,   0,   0, 
+    103,   0,   0,   4, 242,  32, 
+     16,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0, 101,   0, 
+      0,   3,  50,  32,  16,   0, 
+      1,   0,   0,   0, 101,   0, 
+      0,   3, 194,  32,  16,   0, 
+      1,   0,   0,   0,  50,   0, 
+      0,  11,  50,  32,  16,   0, 
+      0,   0,   0,   0,  70,  16, 
+     16,   0,   0,   0,   0,   0, 
+    230, 138,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     70, 128,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     54,   0,   0,   8, 194,  32, 
+     16,   0,   0,   0,   0,   0, 
+      2,  64,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+    128,  63,  50,   0,   0,  11, 
+     50,  32,  16,   0,   1,   0, 
+      0,   0,  70,  16,  16,   0, 
+      0,   0,   0,   0, 230, 138, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  70, 128, 
+     32,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,  50,   0, 
+      0,  11, 194,  32,  16,   0, 
+      1,   0,   0,   0,   6,  20, 
+     16,   0,   0,   0,   0,   0, 
+    166, 142,  32,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
+      6, 132,  32,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
+     62,   0,   0,   1,  83,  84, 
+     65,  84, 116,   0,   0,   0, 
+      5,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,  82,  68,  69,  70, 
+      8,   1,   0,   0,   1,   0, 
+      0,   0,  64,   0,   0,   0, 
+      1,   0,   0,   0,  28,   0, 
+      0,   0,   0,   4, 254, 255, 
+      0,   1,   0,   0, 212,   0, 
+      0,   0,  60,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0,  99,  98, 
+     48,   0,  60,   0,   0,   0, 
+      3,   0,   0,   0,  88,   0, 
+      0,   0,  48,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0, 160,   0,   0,   0, 
+      0,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    172,   0,   0,   0,   0,   0, 
+      0,   0, 188,   0,   0,   0, 
+     16,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    172,   0,   0,   0,   0,   0, 
+      0,   0, 198,   0,   0,   0, 
+     32,   0,   0,   0,  16,   0, 
+      0,   0,   2,   0,   0,   0, 
+    172,   0,   0,   0,   0,   0, 
+      0,   0,  81, 117,  97, 100, 
+     68, 101, 115,  99,   0, 171, 
+    171, 171,   1,   0,   3,   0, 
+      1,   0,   4,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+     84, 101, 120,  67, 111, 111, 
+    114, 100, 115,   0,  77,  97, 
+    115, 107,  84, 101, 120,  67, 
+    111, 111, 114, 100, 115,   0, 
+     77, 105,  99, 114, 111, 115, 
+    111, 102, 116,  32,  40,  82, 
+     41,  32,  72,  76,  83,  76, 
+     32,  83, 104,  97, 100, 101, 
+    114,  32,  67, 111, 109, 112, 
+    105, 108, 101, 114,  32,  57, 
+     46,  50,  57,  46,  57,  53, 
+     50,  46,  51,  49,  49,  49, 
+      0, 171, 171, 171,  73,  83, 
+     71,  78,  44,   0,   0,   0, 
+      1,   0,   0,   0,   8,   0, 
+      0,   0,  32,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,   7,   3, 
+      0,   0,  80,  79,  83,  73, 
+     84,  73,  79,  78,   0, 171, 
+    171, 171,  79,  83,  71,  78, 
+    104,   0,   0,   0,   3,   0, 
+      0,   0,   8,   0,   0,   0, 
+     80,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,  15,   0,   0,   0, 
+     92,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,   3,  12,   0,   0, 
+     92,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,  12,   3,   0,   0, 
+     83,  86,  95,  80, 111, 115, 
+    105, 116, 105, 111, 110,   0, 
+     84,  69,  88,  67,  79,  79, 
+     82,  68,   0, 171, 171, 171, 
+     50,  65,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      2,   0,   0,   0,   0,   0, 
+      0,   0, 172,   9,   0,   0, 
+     68,  88,  66,  67, 110,  68, 
+    159, 211, 251, 173, 118,  80, 
+    154, 213, 185, 171, 243,  23, 
+    113, 100,   1,   0,   0,   0, 
+    172,   9,   0,   0,   6,   0, 
+      0,   0,  56,   0,   0,   0, 
+    220,   2,   0,   0, 204,   6, 
+      0,   0,  72,   7,   0,   0, 
+      8,   9,   0,   0, 120,   9, 
+      0,   0,  65, 111, 110,  57, 
+    156,   2,   0,   0, 156,   2, 
+      0,   0,   0,   2, 255, 255, 
+    104,   2,   0,   0,  52,   0, 
+      0,   0,   1,   0,  40,   0, 
+      0,   0,  52,   0,   0,   0, 
+     52,   0,   1,   0,  36,   0, 
+      0,   0,  52,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      6,   0,   0,   0,   0,   0, 
+      0,   0,   1,   2, 255, 255, 
+     31,   0,   0,   2,   0,   0, 
+      0, 128,   0,   0,  15, 176, 
+     31,   0,   0,   2,   0,   0, 
+      0, 144,   0,   8,  15, 160, 
+      2,   0,   0,   3,   0,   0, 
+      2, 128,   0,   0,  85, 176, 
+      0,   0,  85, 160,   1,   0, 
+      0,   2,   0,   0,   1, 128, 
+      0,   0,   0, 176,   2,   0, 
+      0,   3,   1,   0,   2, 128, 
+      0,   0,  85, 176,   0,   0, 
+      0, 160,   1,   0,   0,   2, 
+      1,   0,   1, 128,   0,   0, 
+      0, 176,  66,   0,   0,   3, 
+      0,   0,  15, 128,   0,   0, 
+    228, 128,   0,   8, 228, 160, 
+     66,   0,   0,   3,   1,   0, 
+     15, 128,   1,   0, 228, 128, 
+      0,   8, 228, 160,   5,   0, 
+      0,   3,   0,   0,  15, 128, 
+      0,   0, 228, 128,   3,   0, 
+     85, 160,   4,   0,   0,   4, 
+      0,   0,  15, 128,   3,   0, 
+      0, 160,   1,   0, 228, 128, 
+      0,   0, 228, 128,   2,   0, 
+      0,   3,   1,   0,   2, 128, 
+      0,   0,  85, 176,   0,   0, 
+    170, 160,   1,   0,   0,   2, 
+      1,   0,   1, 128,   0,   0, 
+      0, 176,   2,   0,   0,   3, 
+      2,   0,   2, 128,   0,   0, 
+     85, 176,   0,   0, 255, 160, 
+      1,   0,   0,   2,   2,   0, 
+      1, 128,   0,   0,   0, 176, 
+     66,   0,   0,   3,   1,   0, 
+     15, 128,   1,   0, 228, 128, 
+      0,   8, 228, 160,  66,   0, 
+      0,   3,   2,   0,  15, 128, 
+      2,   0, 228, 128,   0,   8, 
+    228, 160,   4,   0,   0,   4, 
+      0,   0,  15, 128,   3,   0, 
+    170, 160,   1,   0, 228, 128, 
+      0,   0, 228, 128,   4,   0, 
+      0,   4,   0,   0,  15, 128, 
+      3,   0, 255, 160,   2,   0, 
+    228, 128,   0,   0, 228, 128, 
+      2,   0,   0,   3,   1,   0, 
+      2, 128,   0,   0,  85, 176, 
+      1,   0,   0, 160,   1,   0, 
+      0,   2,   1,   0,   1, 128, 
+      0,   0,   0, 176,   2,   0, 
+      0,   3,   2,   0,   2, 128, 
+      0,   0,  85, 176,   1,   0, 
+     85, 160,   1,   0,   0,   2, 
+      2,   0,   1, 128,   0,   0, 
+      0, 176,  66,   0,   0,   3, 
+      1,   0,  15, 128,   1,   0, 
+    228, 128,   0,   8, 228, 160, 
+     66,   0,   0,   3,   2,   0, 
+     15, 128,   2,   0, 228, 128, 
+      0,   8, 228, 160,   4,   0, 
+      0,   4,   0,   0,  15, 128, 
+      4,   0,   0, 160,   1,   0, 
+    228, 128,   0,   0, 228, 128, 
+      4,   0,   0,   4,   0,   0, 
+     15, 128,   4,   0,  85, 160, 
+      2,   0, 228, 128,   0,   0, 
+    228, 128,   2,   0,   0,   3, 
+      1,   0,   2, 128,   0,   0, 
+     85, 176,   1,   0, 170, 160, 
+      1,   0,   0,   2,   1,   0, 
+      1, 128,   0,   0,   0, 176, 
+      2,   0,   0,   3,   2,   0, 
+      2, 128,   0,   0,  85, 176, 
+      1,   0, 255, 160,   1,   0, 
+      0,   2,   2,   0,   1, 128, 
+      0,   0,   0, 176,  66,   0, 
+      0,   3,   1,   0,  15, 128, 
+      1,   0, 228, 128,   0,   8, 
+    228, 160,  66,   0,   0,   3, 
+      2,   0,  15, 128,   2,   0, 
+    228, 128,   0,   8, 228, 160, 
+      4,   0,   0,   4,   0,   0, 
+     15, 128,   4,   0, 170, 160, 
+      1,   0, 228, 128,   0,   0, 
+    228, 128,   4,   0,   0,   4, 
+      0,   0,  15, 128,   4,   0, 
+    255, 160,   2,   0, 228, 128, 
+      0,   0, 228, 128,   2,   0, 
+      0,   3,   1,   0,   2, 128, 
+      0,   0,  85, 176,   2,   0, 
+      0, 160,   1,   0,   0,   2, 
+      1,   0,   1, 128,   0,   0, 
+      0, 176,  66,   0,   0,   3, 
+      1,   0,  15, 128,   1,   0, 
+    228, 128,   0,   8, 228, 160, 
+      4,   0,   0,   4,   0,   0, 
+     15, 128,   5,   0,   0, 160, 
+      1,   0, 228, 128,   0,   0, 
+    228, 128,   1,   0,   0,   2, 
+      0,   8,  15, 128,   0,   0, 
+    228, 128, 255, 255,   0,   0, 
+     83,  72,  68,  82, 232,   3, 
+      0,   0,  64,   0,   0,   0, 
+    250,   0,   0,   0,  89,   0, 
+      0,   4,  70, 142,  32,   0, 
+      0,   0,   0,   0,   9,   0, 
+      0,   0,  90,   0,   0,   3, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  88,  24,   0,   4, 
+      0, 112,  16,   0,   0,   0, 
+      0,   0,  85,  85,   0,   0, 
+     98,  16,   0,   3,  50,  16, 
+     16,   0,   1,   0,   0,   0, 
+    101,   0,   0,   3, 242,  32, 
+     16,   0,   0,   0,   0,   0, 
+    104,   0,   0,   2,   4,   0, 
+      0,   0,  54,   0,   0,   5, 
+     82,   0,  16,   0,   0,   0, 
+      0,   0,   6,  16,  16,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   8, 242,   0,  16,   0, 
+      1,   0,   0,   0,  86,  21, 
+     16,   0,   1,   0,   0,   0, 
+    134, 141,  32,   0,   0,   0, 
+      0,   0,   3,   0,   0,   0, 
+     54,   0,   0,   5, 162,   0, 
+     16,   0,   0,   0,   0,   0, 
+      6,   8,  16,   0,   1,   0, 
+      0,   0,  69,   0,   0,   9, 
+    242,   0,  16,   0,   2,   0, 
+      0,   0, 230,  10,  16,   0, 
+      0,   0,   0,   0,  70, 126, 
+     16,   0,   0,   0,   0,   0, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  69,   0,   0,   9, 
+    242,   0,  16,   0,   0,   0, 
+      0,   0,  70,   0,  16,   0, 
+      0,   0,   0,   0,  70, 126, 
+     16,   0,   0,   0,   0,   0, 
+      0,  96,  16,   0,   0,   0, 
+      0,   0,  56,   0,   0,   8, 
+    242,   0,  16,   0,   2,   0, 
+      0,   0,  70,  14,  16,   0, 
+      2,   0,   0,   0,  86, 133, 
+     32,   0,   0,   0,   0,   0, 
+      6,   0,   0,   0,  50,   0, 
+      0,  10, 242,   0,  16,   0, 
+      0,   0,   0,   0,   6, 128, 
+     32,   0,   0,   0,   0,   0, 
+      6,   0,   0,   0,  70,  14, 
+     16,   0,   0,   0,   0,   0, 
+     70,  14,  16,   0,   2,   0, 
+      0,   0,  54,   0,   0,   5, 
+     82,   0,  16,   0,   1,   0, 
+      0,   0,   6,  16,  16,   0, 
+      1,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      2,   0,   0,   0,  70,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      1,   0,   0,   0, 230,  10, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  50,   0, 
+      0,  10, 242,   0,  16,   0, 
+      0,   0,   0,   0, 166, 138, 
+     32,   0,   0,   0,   0,   0, 
+      6,   0,   0,   0,  70,  14, 
+     16,   0,   2,   0,   0,   0, 
+     70,  14,  16,   0,   0,   0, 
+      0,   0,  50,   0,   0,  10, 
+    242,   0,  16,   0,   0,   0, 
+      0,   0, 246, 143,  32,   0, 
+      0,   0,   0,   0,   6,   0, 
+      0,   0,  70,  14,  16,   0, 
+      1,   0,   0,   0,  70,  14, 
+     16,   0,   0,   0,   0,   0, 
+     54,   0,   0,   5,  82,   0, 
+     16,   0,   1,   0,   0,   0, 
+      6,  16,  16,   0,   1,   0, 
+      0,   0,   0,   0,   0,   8, 
+    242,   0,  16,   0,   2,   0, 
+      0,   0,  86,  21,  16,   0, 
+      1,   0,   0,   0, 134, 141, 
+     32,   0,   0,   0,   0,   0, 
+      4,   0,   0,   0,  54,   0, 
+      0,   5, 162,   0,  16,   0, 
+      1,   0,   0,   0,   6,   8, 
+     16,   0,   2,   0,   0,   0, 
+     69,   0,   0,   9, 242,   0, 
+     16,   0,   3,   0,   0,   0, 
+     70,   0,  16,   0,   1,   0, 
+      0,   0,  70, 126,  16,   0, 
+      0,   0,   0,   0,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     69,   0,   0,   9, 242,   0, 
+     16,   0,   1,   0,   0,   0, 
+    230,  10,  16,   0,   1,   0, 
+      0,   0,  70, 126,  16,   0, 
+      0,   0,   0,   0,   0,  96, 
+     16,   0,   0,   0,   0,   0, 
+     50,   0,   0,  10, 242,   0, 
+     16,   0,   0,   0,   0,   0, 
+      6, 128,  32,   0,   0,   0, 
+      0,   0,   7,   0,   0,   0, 
+     70,  14,  16,   0,   3,   0, 
+      0,   0,  70,  14,  16,   0, 
+      0,   0,   0,   0,  50,   0, 
+      0,  10, 242,   0,  16,   0, 
+      0,   0,   0,   0,  86, 133, 
+     32,   0,   0,   0,   0,   0, 
+      7,   0,   0,   0,  70,  14, 
+     16,   0,   1,   0,   0,   0, 
+     70,  14,  16,   0,   0,   0, 
+      0,   0,  54,   0,   0,   5, 
+     82,   0,  16,   0,   2,   0, 
+      0,   0,   6,  16,  16,   0, 
+      1,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      1,   0,   0,   0,  70,   0, 
+     16,   0,   2,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      2,   0,   0,   0, 230,  10, 
+     16,   0,   2,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  50,   0, 
+      0,  10, 242,   0,  16,   0, 
+      0,   0,   0,   0, 166, 138, 
+     32,   0,   0,   0,   0,   0, 
+      7,   0,   0,   0,  70,  14, 
+     16,   0,   1,   0,   0,   0, 
+     70,  14,  16,   0,   0,   0, 
+      0,   0,  50,   0,   0,  10, 
+    242,   0,  16,   0,   0,   0, 
+      0,   0, 246, 143,  32,   0, 
+      0,   0,   0,   0,   7,   0, 
+      0,   0,  70,  14,  16,   0, 
+      2,   0,   0,   0,  70,  14, 
+     16,   0,   0,   0,   0,   0, 
+      0,   0,   0,   8,  34,   0, 
+     16,   0,   1,   0,   0,   0, 
+     26,  16,  16,   0,   1,   0, 
+      0,   0,  10, 128,  32,   0, 
+      0,   0,   0,   0,   5,   0, 
+      0,   0,  54,   0,   0,   5, 
+     18,   0,  16,   0,   1,   0, 
+      0,   0,  10,  16,  16,   0, 
+      1,   0,   0,   0,  69,   0, 
+      0,   9, 242,   0,  16,   0, 
+      1,   0,   0,   0,  70,   0, 
+     16,   0,   1,   0,   0,   0, 
+     70, 126,  16,   0,   0,   0, 
+      0,   0,   0,  96,  16,   0, 
+      0,   0,   0,   0,  50,   0, 
+      0,  10, 242,  32,  16,   0, 
+      0,   0,   0,   0,   6, 128, 
+     32,   0,   0,   0,   0,   0, 
+      8,   0,   0,   0,  70,  14, 
+     16,   0,   1,   0,   0,   0, 
+     70,  14,  16,   0,   0,   0, 
+      0,   0,  62,   0,   0,   1, 
+     83,  84,  65,  84, 116,   0, 
+      0,   0,  29,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   2,   0,   0,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      1,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   9,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      9,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  82,  68, 
+     69,  70, 184,   1,   0,   0, 
+      1,   0,   0,   0, 148,   0, 
+      0,   0,   3,   0,   0,   0, 
+     28,   0,   0,   0,   0,   4, 
+    255, 255,   0,   1,   0,   0, 
+    132,   1,   0,   0, 124,   0, 
+      0,   0,   3,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+    139,   0,   0,   0,   2,   0, 
+      0,   0,   5,   0,   0,   0, 
+      4,   0,   0,   0, 255, 255, 
+    255, 255,   0,   0,   0,   0, 
+      1,   0,   0,   0,  12,   0, 
+      0,   0, 143,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      0,   0,   0,   0, 115,  83, 
+    104,  97, 100, 111, 119,  83, 
+     97, 109, 112, 108, 101, 114, 
+      0, 116, 101, 120,   0,  99, 
+     98,  49,   0, 171, 143,   0, 
+      0,   0,   4,   0,   0,   0, 
+    172,   0,   0,   0, 160,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  12,   1, 
+      0,   0,   0,   0,   0,   0, 
+     48,   0,   0,   0,   0,   0, 
+      0,   0,  28,   1,   0,   0, 
+      0,   0,   0,   0,  44,   1, 
+      0,   0,  48,   0,   0,   0, 
+     48,   0,   0,   0,   2,   0, 
+      0,   0,  60,   1,   0,   0, 
+      0,   0,   0,   0,  76,   1, 
+      0,   0,  96,   0,   0,   0, 
+     48,   0,   0,   0,   2,   0, 
+      0,   0,  88,   1,   0,   0, 
+      0,   0,   0,   0, 104,   1, 
+      0,   0, 144,   0,   0,   0, 
+     16,   0,   0,   0,   0,   0, 
+      0,   0, 116,   1,   0,   0, 
+      0,   0,   0,   0,  66, 108, 
+    117, 114,  79, 102, 102, 115, 
+    101, 116, 115,  72,   0, 171, 
+    171, 171,   1,   0,   3,   0, 
+      1,   0,   4,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     66, 108, 117, 114,  79, 102, 
+    102, 115, 101, 116, 115,  86, 
+      0, 171, 171, 171,   1,   0, 
+      3,   0,   1,   0,   4,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,  66, 108, 117, 114, 
+     87, 101, 105, 103, 104, 116, 
+    115,   0,   1,   0,   3,   0, 
+      1,   0,   4,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     83, 104,  97, 100, 111, 119, 
+     67, 111, 108, 111, 114,   0, 
+      1,   0,   3,   0,   1,   0, 
+      4,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,  77, 105, 
+     99, 114, 111, 115, 111, 102, 
+    116,  32,  40,  82,  41,  32, 
+     72,  76,  83,  76,  32,  83, 
+    104,  97, 100, 101, 114,  32, 
+     67, 111, 109, 112, 105, 108, 
+    101, 114,  32,  57,  46,  50, 
+     57,  46,  57,  53,  50,  46, 
+     51,  49,  49,  49,   0, 171, 
+    171, 171,  73,  83,  71,  78, 
+    104,   0,   0,   0,   3,   0, 
+      0,   0,   8,   0,   0,   0, 
+     80,   0,   0,   0,   0,   0, 
+      0,   0,   1,   0,   0,   0, 
+      3,   0,   0,   0,   0,   0, 
+      0,   0,  15,   0,   0,   0, 
+     92,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,   3,   3,   0,   0, 
+     92,   0,   0,   0,   1,   0, 
+      0,   0,   0,   0,   0,   0, 
+      3,   0,   0,   0,   1,   0, 
+      0,   0,  12,   0,   0,   0, 
+     83,  86,  95,  80, 111, 115, 
+    105, 116, 105, 111, 110,   0, 
+     84,  69,  88,  67,  79,  79, 
+     82,  68,   0, 171, 171, 171, 
+     79,  83,  71,  78,  44,   0, 
+      0,   0,   1,   0,   0,   0, 
+      8,   0,   0,   0,  32,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   3,   0, 
+      0,   0,   0,   0,   0,   0, 
+     15,   0,   0,   0,  83,  86, 
+     95,  84,  97, 114, 103, 101, 
+    116,   0, 171, 171, 110,  69, 
+      0,   0,   0,   0,   0,   0, 
+     80,  50,   0,   4,   0,   0, 
+      0,   1,   0,   0,   0,   0, 
+      0, 128,  63,   1,   0,   0, 
       0,   0,   0, 128,  63,   1, 
       0,   0,   0,   0,   0, 128, 
      63,   1,   0,   0,   0,   0, 
       0, 128,  63,   1,   0,   0, 
-      0,   0,   0, 128,  63,   1, 
-      0,   0,   0,   3,   0,   0, 
-      0, 255, 255, 255, 255,  36, 
-      4,   0,   0,  68,  88,  66, 
-     67, 116, 139,  68,  62,  73, 
-    113,  92,   4,  72,  76, 225, 
-    161,  30, 132, 222, 233,   1, 
-      0,   0,   0,  36,   4,   0, 
-      0,   6,   0,   0,   0,  56, 
-      0,   0,   0, 248,   0,   0, 
-      0, 244,   1,   0,   0, 112, 
-      2,   0,   0, 128,   3,   0, 
-      0, 180,   3,   0,   0,  65, 
-    111, 110,  57, 184,   0,   0, 
-      0, 184,   0,   0,   0,   0, 
-      2, 254, 255, 132,   0,   0, 
-      0,  52,   0,   0,   0,   1, 
-      0,  36,   0,   0,   0,  48, 
+      0,   3,   0,   0,   0, 255, 
+    255, 255, 255,  36,   4,   0, 
+      0,  68,  88,  66,  67, 116, 
+    139,  68,  62,  73, 113,  92, 
+      4,  72,  76, 225, 161,  30, 
+    132, 222, 233,   1,   0,   0, 
+      0,  36,   4,   0,   0,   6, 
+      0,   0,   0,  56,   0,   0, 
+      0, 248,   0,   0,   0, 244, 
+      1,   0,   0, 112,   2,   0, 
+      0, 128,   3,   0,   0, 180, 
+      3,   0,   0,  65, 111, 110, 
+     57, 184,   0,   0,   0, 184, 
+      0,   0,   0,   0,   2, 254, 
+    255, 132,   0,   0,   0,  52, 
+      0,   0,   0,   1,   0,  36, 
       0,   0,   0,  48,   0,   0, 
-      0,  36,   0,   1,   0,  48, 
-      0,   0,   0,   0,   0,   3, 
-      0,   1,   0,   0,   0,   0, 
+      0,  48,   0,   0,   0,  36, 
+      0,   1,   0,  48,   0,   0, 
+      0,   0,   0,   3,   0,   1, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   1,   2, 254, 
+    255,  81,   0,   0,   5,   4, 
+      0,  15, 160,   0,   0,   0, 
+      0,   0,   0, 128,  63,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  31,   0,   0,   2,   5, 
+      0,   0, 128,   0,   0,  15, 
+    144,   4,   0,   0,   4,   0, 
+      0,   3, 224,   0,   0, 228, 
+    144,   2,   0, 238, 160,   2, 
+      0, 228, 160,   4,   0,   0, 
+      4,   0,   0,  12, 224,   0, 
+      0,  20, 144,   3,   0, 180, 
+    160,   3,   0,  20, 160,   4, 
+      0,   0,   4,   0,   0,   3, 
+    128,   0,   0, 228, 144,   1, 
+      0, 238, 160,   1,   0, 228, 
+    160,   2,   0,   0,   3,   0, 
+      0,   3, 192,   0,   0, 228, 
+    128,   0,   0, 228, 160,   1, 
+      0,   0,   2,   0,   0,  12, 
+    192,   4,   0,  68, 160, 255, 
+    255,   0,   0,  83,  72,  68, 
+     82, 244,   0,   0,   0,  64, 
+      0,   1,   0,  61,   0,   0, 
+      0,  89,   0,   0,   4,  70, 
+    142,  32,   0,   0,   0,   0, 
+      0,   3,   0,   0,   0,  95, 
+      0,   0,   3,  50,  16,  16, 
+      0,   0,   0,   0,   0, 103, 
+      0,   0,   4, 242,  32,  16, 
       0,   0,   0,   0,   0,   1, 
-      2, 254, 255,  81,   0,   0, 
-      5,   4,   0,  15, 160,   0, 
-      0,   0,   0,   0,   0, 128, 
-     63,   0,   0,   0,   0,   0, 
-      0,   0,   0,  31,   0,   0, 
-      2,   5,   0,   0, 128,   0, 
-      0,  15, 144,   4,   0,   0, 
-      4,   0,   0,   3, 224,   0, 
-      0, 228, 144,   2,   0, 238, 
-    160,   2,   0, 228, 160,   4, 
-      0,   0,   4,   0,   0,  12, 
-    224,   0,   0,  20, 144,   3, 
-      0, 180, 160,   3,   0,  20, 
-    160,   4,   0,   0,   4,   0, 
-      0,   3, 128,   0,   0, 228, 
-    144,   1,   0, 238, 160,   1, 
-      0, 228, 160,   2,   0,   0, 
-      3,   0,   0,   3, 192,   0, 
-      0, 228, 128,   0,   0, 228, 
-    160,   1,   0,   0,   2,   0, 
-      0,  12, 192,   4,   0,  68, 
-    160, 255, 255,   0,   0,  83, 
-     72,  68,  82, 244,   0,   0, 
-      0,  64,   0,   1,   0,  61, 
-      0,   0,   0,  89,   0,   0, 
-      4,  70, 142,  32,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,  95,   0,   0,   3,  50, 
-     16,  16,   0,   0,   0,   0, 
-      0, 103,   0,   0,   4, 242, 
-     32,  16,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 101, 
-      0,   0,   3,  50,  32,  16, 
-      0,   1,   0,   0,   0, 101, 
-      0,   0,   3, 194,  32,  16, 
-      0,   1,   0,   0,   0,  50, 
-      0,   0,  11,  50,  32,  16, 
-      0,   0,   0,   0,   0,  70, 
-     16,  16,   0,   0,   0,   0, 
-      0, 230, 138,  32,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  70, 128,  32,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  54,   0,   0,   8, 194, 
-     32,  16,   0,   0,   0,   0, 
-      0,   2,  64,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0, 128,  63,  50,   0,   0, 
-     11,  50,  32,  16,   0,   1, 
+      0,   0,   0, 101,   0,   0, 
+      3,  50,  32,  16,   0,   1, 
+      0,   0,   0, 101,   0,   0, 
+      3, 194,  32,  16,   0,   1, 
+      0,   0,   0,  50,   0,   0, 
+     11,  50,  32,  16,   0,   0, 
       0,   0,   0,  70,  16,  16, 
       0,   0,   0,   0,   0, 230, 
     138,  32,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,  70, 
+      0,   0,   0,   0,   0,  70, 
     128,  32,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,  50, 
-      0,   0,  11, 194,  32,  16, 
-      0,   1,   0,   0,   0,   6, 
-     20,  16,   0,   0,   0,   0, 
-      0, 166, 142,  32,   0,   0, 
-      0,   0,   0,   2,   0,   0, 
-      0,   6, 132,  32,   0,   0, 
-      0,   0,   0,   2,   0,   0, 
-      0,  62,   0,   0,   1,  83, 
-     84,  65,  84, 116,   0,   0, 
-      0,   5,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   4,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  54, 
+      0,   0,   8, 194,  32,  16, 
+      0,   0,   0,   0,   0,   2, 
+     64,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0, 128, 
+     63,  50,   0,   0,  11,  50, 
+     32,  16,   0,   1,   0,   0, 
+      0,  70,  16,  16,   0,   0, 
+      0,   0,   0, 230, 138,  32, 
+      0,   0,   0,   0,   0,   1, 
+      0,   0,   0,  70, 128,  32, 
       0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  82,  68,  69, 
-     70,   8,   1,   0,   0,   1, 
-      0,   0,   0,  64,   0,   0, 
-      0,   1,   0,   0,   0,  28, 
-      0,   0,   0,   0,   4, 254, 
-    255,   0,   1,   0,   0, 212, 
-      0,   0,   0,  60,   0,   0, 
+      0,   0,   0,  50,   0,   0, 
+     11, 194,  32,  16,   0,   1, 
+      0,   0,   0,   6,  20,  16, 
+      0,   0,   0,   0,   0, 166, 
+    142,  32,   0,   0,   0,   0, 
+      0,   2,   0,   0,   0,   6, 
+    132,  32,   0,   0,   0,   0, 
+      0,   2,   0,   0,   0,  62, 
+      0,   0,   1,  83,  84,  65, 
+     84, 116,   0,   0,   0,   5, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   4, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   1,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0,  99, 
-     98,  48,   0,  60,   0,   0, 
-      0,   3,   0,   0,   0,  88, 
-      0,   0,   0,  48,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0, 160,   0,   0, 
-      0,   0,   0,   0,   0,  16, 
-      0,   0,   0,   2,   0,   0, 
-      0, 172,   0,   0,   0,   0, 
-      0,   0,   0, 188,   0,   0, 
-      0,  16,   0,   0,   0,  16, 
-      0,   0,   0,   2,   0,   0, 
-      0, 172,   0,   0,   0,   0, 
-      0,   0,   0, 198,   0,   0, 
-      0,  32,   0,   0,   0,  16, 
-      0,   0,   0,   2,   0,   0, 
-      0, 172,   0,   0,   0,   0, 
-      0,   0,   0,  81, 117,  97, 
-    100,  68, 101, 115,  99,   0, 
-    171, 171, 171,   1,   0,   3, 
-      0,   1,   0,   4,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  84, 101, 120,  67, 111, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  82,  68,  69,  70,   8, 
+      1,   0,   0,   1,   0,   0, 
+      0,  64,   0,   0,   0,   1, 
+      0,   0,   0,  28,   0,   0, 
+      0,   0,   4, 254, 255,   0, 
+      1,   0,   0, 212,   0,   0, 
+      0,  60,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,   0, 
+      0,   0,   0,  99,  98,  48, 
+      0,  60,   0,   0,   0,   3, 
+      0,   0,   0,  88,   0,   0, 
+      0,  48,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0, 160,   0,   0,   0,   0, 
+      0,   0,   0,  16,   0,   0, 
+      0,   2,   0,   0,   0, 172, 
+      0,   0,   0,   0,   0,   0, 
+      0, 188,   0,   0,   0,  16, 
+      0,   0,   0,  16,   0,   0, 
+      0,   2,   0,   0,   0, 172, 
+      0,   0,   0,   0,   0,   0, 
+      0, 198,   0,   0,   0,  32, 
+      0,   0,   0,  16,   0,   0, 
+      0,   2,   0,   0,   0, 172, 
+      0,   0,   0,   0,   0,   0, 
+      0,  81, 117,  97, 100,  68, 
+    101, 115,  99,   0, 171, 171, 
+    171,   1,   0,   3,   0,   1, 
+      0,   4,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  84, 
+    101, 120,  67, 111, 111, 114, 
+    100, 115,   0,  77,  97, 115, 
+    107,  84, 101, 120,  67, 111, 
     111, 114, 100, 115,   0,  77, 
-     97, 115, 107,  84, 101, 120, 
-     67, 111, 111, 114, 100, 115, 
-      0,  77, 105,  99, 114, 111, 
-    115, 111, 102, 116,  32,  40, 
-     82,  41,  32,  72,  76,  83, 
-     76,  32,  83, 104,  97, 100, 
-    101, 114,  32,  67, 111, 109, 
-    112, 105, 108, 101, 114,  32, 
-     57,  46,  50,  57,  46,  57, 
-     53,  50,  46,  51,  49,  49, 
-     49,   0, 171, 171, 171,  73, 
-     83,  71,  78,  44,   0,   0, 
-      0,   1,   0,   0,   0,   8, 
-      0,   0,   0,  32,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,   7, 
-      3,   0,   0,  80,  79,  83, 
-     73,  84,  73,  79,  78,   0, 
-    171, 171, 171,  79,  83,  71, 
-     78, 104,   0,   0,   0,   3, 
+    105,  99, 114, 111, 115, 111, 
+    102, 116,  32,  40,  82,  41, 
+     32,  72,  76,  83,  76,  32, 
+     83, 104,  97, 100, 101, 114, 
+     32,  67, 111, 109, 112, 105, 
+    108, 101, 114,  32,  57,  46, 
+     50,  57,  46,  57,  53,  50, 
+     46,  51,  49,  49,  49,   0, 
+    171, 171, 171,  73,  83,  71, 
+     78,  44,   0,   0,   0,   1, 
       0,   0,   0,   8,   0,   0, 
-      0,  80,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
+      0,  32,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
       0,   3,   0,   0,   0,   0, 
-      0,   0,   0,  15,   0,   0, 
-      0,  92,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   3,   0,   0,   0,   1, 
-      0,   0,   0,   3,  12,   0, 
-      0,  92,   0,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0,   3,   0,   0,   0,   1, 
-      0,   0,   0,  12,   3,   0, 
-      0,  83,  86,  95,  80, 111, 
-    115, 105, 116, 105, 111, 110, 
-      0,  84,  69,  88,  67,  79, 
-     79,  82,  68,   0, 171, 171, 
-    171, 223,  46,   0,   0,   0, 
+      0,   0,   0,   7,   3,   0, 
+      0,  80,  79,  83,  73,  84, 
+     73,  79,  78,   0, 171, 171, 
+    171,  79,  83,  71,  78, 104, 
+      0,   0,   0,   3,   0,   0, 
+      0,   8,   0,   0,   0,  80, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,   3, 
+      0,   0,   0,   0,   0,   0, 
+      0,  15,   0,   0,   0,  92, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   3, 
+      0,   0,   0,   1,   0,   0, 
+      0,   3,  12,   0,   0,  92, 
+      0,   0,   0,   1,   0,   0, 
+      0,   0,   0,   0,   0,   3, 
       0,   0,   0,   1,   0,   0, 
-      0,   2,   0,   0,   0,   0, 
-      0,   0,   0, 164,  10,   0, 
-      0,  68,  88,  66,  67, 143, 
-    148, 190,  36,  41, 120,  46, 
-    207, 200, 138, 139,  29,  38, 
-     89, 245,  86,   1,   0,   0, 
-      0, 164,  10,   0,   0,   6, 
-      0,   0,   0,  56,   0,   0, 
-      0,  24,   3,   0,   0, 112, 
-      7,   0,   0, 236,   7,   0, 
-      0,   0,  10,   0,   0, 112, 
-     10,   0,   0,  65, 111, 110, 
-     57, 216,   2,   0,   0, 216, 
-      2,   0,   0,   0,   2, 255, 
-    255, 160,   2,   0,   0,  56, 
-      0,   0,   0,   1,   0,  44, 
-      0,   0,   0,  56,   0,   0, 
-      0,  56,   0,   2,   0,  36, 
-      0,   0,   0,  56,   0,   1, 
-      0,   0,   0,   0,   1,   1, 
-      0,   0,   0,   3,   0,   6, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   2, 255, 255,  31, 
-      0,   0,   2,   0,   0,   0, 
-    128,   0,   0,  15, 176,  31, 
-      0,   0,   2,   0,   0,   0, 
-    144,   0,   8,  15, 160,  31, 
-      0,   0,   2,   0,   0,   0, 
-    144,   1,   8,  15, 160,   2, 
-      0,   0,   3,   0,   0,   2, 
+      0,  12,   3,   0,   0,  83, 
+     86,  95,  80, 111, 115, 105, 
+    116, 105, 111, 110,   0,  84, 
+     69,  88,  67,  79,  79,  82, 
+     68,   0, 171, 171, 171,  89, 
+     79,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,   2, 
+      0,   0,   0,   0,   0,   0, 
+      0, 164,  10,   0,   0,  68, 
+     88,  66,  67, 143, 148, 190, 
+     36,  41, 120,  46, 207, 200, 
+    138, 139,  29,  38,  89, 245, 
+     86,   1,   0,   0,   0, 164, 
+     10,   0,   0,   6,   0,   0, 
+      0,  56,   0,   0,   0,  24, 
+      3,   0,   0, 112,   7,   0, 
+      0, 236,   7,   0,   0,   0, 
+     10,   0,   0, 112,  10,   0, 
+      0,  65, 111, 110,  57, 216, 
+      2,   0,   0, 216,   2,   0, 
+      0,   0,   2, 255, 255, 160, 
+      2,   0,   0,  56,   0,   0, 
+      0,   1,   0,  44,   0,   0, 
+      0,  56,   0,   0,   0,  56, 
+      0,   2,   0,  36,   0,   0, 
+      0,  56,   0,   1,   0,   0, 
+      0,   0,   1,   1,   0,   0, 
+      0,   3,   0,   6,   0,   0, 
+      0,   0,   0,   0,   0,   1, 
+      2, 255, 255,  31,   0,   0, 
+      2,   0,   0,   0, 128,   0, 
+      0,  15, 176,  31,   0,   0, 
+      2,   0,   0,   0, 144,   0, 
+      8,  15, 160,  31,   0,   0, 
+      2,   0,   0,   0, 144,   1, 
+      8,  15, 160,   2,   0,   0, 
+      3,   0,   0,   2, 128,   0, 
+      0,  85, 176,   0,   0,  85, 
+    160,   1,   0,   0,   2,   0, 
+      0,   1, 128,   0,   0,   0, 
+    176,   2,   0,   0,   3,   1, 
+      0,   2, 128,   0,   0,  85, 
+    176,   0,   0,   0, 160,   1, 
+      0,   0,   2,   1,   0,   1, 
+    128,   0,   0,   0, 176,  66, 
+      0,   0,   3,   0,   0,  15, 
+    128,   0,   0, 228, 128,   1, 
+      8, 228, 160,  66,   0,   0, 
+      3,   1,   0,  15, 128,   1, 
+      0, 228, 128,   1,   8, 228, 
+    160,   5,   0,   0,   3,   0, 
+      0,  15, 128,   0,   0, 228, 
+    128,   3,   0,  85, 160,   4, 
+      0,   0,   4,   0,   0,  15, 
+    128,   3,   0,   0, 160,   1, 
+      0, 228, 128,   0,   0, 228, 
+    128,   2,   0,   0,   3,   1, 
+      0,   2, 128,   0,   0,  85, 
+    176,   0,   0, 170, 160,   1, 
+      0,   0,   2,   1,   0,   1, 
+    128,   0,   0,   0, 176,   2, 
+      0,   0,   3,   2,   0,   2, 
     128,   0,   0,  85, 176,   0, 
-      0,  85, 160,   1,   0,   0, 
-      2,   0,   0,   1, 128,   0, 
-      0,   0, 176,   2,   0,   0, 
-      3,   1,   0,   2, 128,   0, 
-      0,  85, 176,   0,   0,   0, 
-    160,   1,   0,   0,   2,   1, 
-      0,   1, 128,   0,   0,   0, 
-    176,  66,   0,   0,   3,   0, 
-      0,  15, 128,   0,   0, 228, 
-    128,   1,   8, 228, 160,  66, 
-      0,   0,   3,   1,   0,  15, 
-    128,   1,   0, 228, 128,   1, 
-      8, 228, 160,   5,   0,   0, 
-      3,   0,   0,  15, 128,   0, 
-      0, 228, 128,   3,   0,  85, 
-    160,   4,   0,   0,   4,   0, 
-      0,  15, 128,   3,   0,   0, 
-    160,   1,   0, 228, 128,   0, 
+      0, 255, 160,   1,   0,   0, 
+      2,   2,   0,   1, 128,   0, 
+      0,   0, 176,  66,   0,   0, 
+      3,   1,   0,  15, 128,   1, 
+      0, 228, 128,   1,   8, 228, 
+    160,  66,   0,   0,   3,   2, 
+      0,  15, 128,   2,   0, 228, 
+    128,   1,   8, 228, 160,   4, 
+      0,   0,   4,   0,   0,  15, 
+    128,   3,   0, 170, 160,   1, 
+      0, 228, 128,   0,   0, 228, 
+    128,   4,   0,   0,   4,   0, 
+      0,  15, 128,   3,   0, 255, 
+    160,   2,   0, 228, 128,   0, 
       0, 228, 128,   2,   0,   0, 
       3,   1,   0,   2, 128,   0, 
-      0,  85, 176,   0,   0, 170, 
+      0,  85, 176,   1,   0,   0, 
     160,   1,   0,   0,   2,   1, 
       0,   1, 128,   0,   0,   0, 
     176,   2,   0,   0,   3,   2, 
       0,   2, 128,   0,   0,  85, 
-    176,   0,   0, 255, 160,   1, 
+    176,   1,   0,  85, 160,   1, 
       0,   0,   2,   2,   0,   1, 
     128,   0,   0,   0, 176,  66, 
       0,   0,   3,   1,   0,  15, 
     128,   1,   0, 228, 128,   1, 
       8, 228, 160,  66,   0,   0, 
       3,   2,   0,  15, 128,   2, 
       0, 228, 128,   1,   8, 228, 
     160,   4,   0,   0,   4,   0, 
-      0,  15, 128,   3,   0, 170, 
+      0,  15, 128,   4,   0,   0, 
     160,   1,   0, 228, 128,   0, 
       0, 228, 128,   4,   0,   0, 
-      4,   0,   0,  15, 128,   3, 
-      0, 255, 160,   2,   0, 228, 
+      4,   0,   0,  15, 128,   4, 
+      0,  85, 160,   2,   0, 228, 
     128,   0,   0, 228, 128,   2, 
       0,   0,   3,   1,   0,   2, 
     128,   0,   0,  85, 176,   1, 
-      0,   0, 160,   1,   0,   0, 
+      0, 170, 160,   1,   0,   0, 
       2,   1,   0,   1, 128,   0, 
       0,   0, 176,   2,   0,   0, 
       3,   2,   0,   2, 128,   0, 
-      0,  85, 176,   1,   0,  85, 
+      0,  85, 176,   1,   0, 255, 
     160,   1,   0,   0,   2,   2, 
       0,   1, 128,   0,   0,   0, 
     176,  66,   0,   0,   3,   1, 
       0,  15, 128,   1,   0, 228, 
     128,   1,   8, 228, 160,  66, 
       0,   0,   3,   2,   0,  15, 
     128,   2,   0, 228, 128,   1, 
       8, 228, 160,   4,   0,   0, 
       4,   0,   0,  15, 128,   4, 
-      0,   0, 160,   1,   0, 228, 
+      0, 170, 160,   1,   0, 228, 
     128,   0,   0, 228, 128,   4, 
       0,   0,   4,   0,   0,  15, 
-    128,   4,   0,  85, 160,   2, 
+    128,   4,   0, 255, 160,   2, 
       0, 228, 128,   0,   0, 228, 
     128,   2,   0,   0,   3,   1, 
       0,   2, 128,   0,   0,  85, 
-    176,   1,   0, 170, 160,   1, 
+    176,   2,   0,   0, 160,   1, 
       0,   0,   2,   1,   0,   1, 
-    128,   0,   0,   0, 176,   2, 
-      0,   0,   3,   2,   0,   2, 
-    128,   0,   0,  85, 176,   1, 
-      0, 255, 160,   1,   0,   0, 
-      2,   2,   0,   1, 128,   0, 
-      0,   0, 176,  66,   0,   0, 
-      3,   1,   0,  15, 128,   1, 
-      0, 228, 128,   1,   8, 228, 
-    160,  66,   0,   0,   3,   2, 
-      0,  15, 128,   2,   0, 228, 
-    128,   1,   8, 228, 160,   4, 
-      0,   0,   4,   0,   0,  15, 
-    128,   4,   0, 170, 160,   1, 
-      0, 228, 128,   0,   0, 228, 
-    128,   4,   0,   0,   4,   0, 
-      0,  15, 128,   4,   0, 255, 
-    160,   2,   0, 228, 128,   0, 
-      0, 228, 128,   2,   0,   0, 
-      3,   1,   0,   2, 128,   0, 
-      0,  85, 176,   2,   0,   0, 
-    160,   1,   0,   0,   2,   1, 
-      0,   1, 128,   0,   0,   0, 
-    176,   1,   0,   0,   2,   2, 
-      0,   3, 128,   0,   0, 235, 
-    176,  66,   0,   0,   3,   1, 
-      0,  15, 128,   1,   0, 228, 
-    128,   1,   8, 228, 160,  66, 
-      0,   0,   3,   2,   0,  15, 
-    128,   2,   0, 228, 128,   0, 
-      8, 228, 160,   4,   0,   0, 
-      4,   0,   0,  15, 128,   5, 
-      0,   0, 160,   1,   0, 228, 
-    128,   0,   0, 228, 128,   5, 
-      0,   0,   3,   0,   0,  15, 
-    128,   2,   0, 255, 128,   0, 
-      0, 228, 128,   1,   0,   0, 
-      2,   0,   8,  15, 128,   0, 
-      0, 228, 128, 255, 255,   0, 
-      0,  83,  72,  68,  82,  80, 
-      4,   0,   0,  64,   0,   0, 
-      0,  20,   1,   0,   0,  89, 
-      0,   0,   4,  70, 142,  32, 
-      0,   0,   0,   0,   0,   9, 
-      0,   0,   0,  90,   0,   0, 
-      3,   0,  96,  16,   0,   0, 
-      0,   0,   0,  90,   0,   0, 
-      3,   0,  96,  16,   0,   1, 
-      0,   0,   0,  88,  24,   0, 
-      4,   0, 112,  16,   0,   0, 
-      0,   0,   0,  85,  85,   0, 
+    128,   0,   0,   0, 176,   1, 
+      0,   0,   2,   2,   0,   3, 
+    128,   0,   0, 235, 176,  66, 
+      0,   0,   3,   1,   0,  15, 
+    128,   1,   0, 228, 128,   1, 
+      8, 228, 160,  66,   0,   0, 
+      3,   2,   0,  15, 128,   2, 
+      0, 228, 128,   0,   8, 228, 
+    160,   4,   0,   0,   4,   0, 
+      0,  15, 128,   5,   0,   0, 
+    160,   1,   0, 228, 128,   0, 
+      0, 228, 128,   5,   0,   0, 
+      3,   0,   0,  15, 128,   2, 
+      0, 255, 128,   0,   0, 228, 
+    128,   1,   0,   0,   2,   0, 
+      8,  15, 128,   0,   0, 228, 
+    128, 255, 255,   0,   0,  83, 
+     72,  68,  82,  80,   4,   0, 
+      0,  64,   0,   0,   0,  20, 
+      1,   0,   0,  89,   0,   0, 
+      4,  70, 142,  32,   0,   0, 
+      0,   0,   0,   9,   0,   0, 
+      0,  90,   0,   0,   3,   0, 
+     96,  16,   0,   0,   0,   0, 
+      0,  90,   0,   0,   3,   0, 
+     96,  16,   0,   1,   0,   0, 
       0,  88,  24,   0,   4,   0, 
-    112,  16,   0,   1,   0,   0, 
-      0,  85,  85,   0,   0,  98, 
-     16,   0,   3,  50,  16,  16, 
-      0,   1,   0,   0,   0,  98, 
-     16,   0,   3, 194,  16,  16, 
-      0,   1,   0,   0,   0, 101, 
-      0,   0,   3, 242,  32,  16, 
-      0,   0,   0,   0,   0, 104, 
-      0,   0,   2,   4,   0,   0, 
-      0,  54,   0,   0,   5,  82, 
+    112,  16,   0,   0,   0,   0, 
+      0,  85,  85,   0,   0,  88, 
+     24,   0,   4,   0, 112,  16, 
+      0,   1,   0,   0,   0,  85, 
+     85,   0,   0,  98,  16,   0, 
+      3,  50,  16,  16,   0,   1, 
+      0,   0,   0,  98,  16,   0, 
+      3, 194,  16,  16,   0,   1, 
+      0,   0,   0, 101,   0,   0, 
+      3, 242,  32,  16,   0,   0, 
+      0,   0,   0, 104,   0,   0, 
+      2,   4,   0,   0,   0,  54, 
+      0,   0,   5,  82,   0,  16, 
+      0,   0,   0,   0,   0,   6, 
+     16,  16,   0,   1,   0,   0, 
+      0,   0,   0,   0,   8, 242, 
+      0,  16,   0,   1,   0,   0, 
+      0,  86,  21,  16,   0,   1, 
+      0,   0,   0, 134, 141,  32, 
+      0,   0,   0,   0,   0,   3, 
+      0,   0,   0,  54,   0,   0, 
+      5, 162,   0,  16,   0,   0, 
+      0,   0,   0,   6,   8,  16, 
+      0,   1,   0,   0,   0,  69, 
+      0,   0,   9, 242,   0,  16, 
+      0,   2,   0,   0,   0, 230, 
+     10,  16,   0,   0,   0,   0, 
+      0,  70, 126,  16,   0,   0, 
+      0,   0,   0,   0,  96,  16, 
+      0,   1,   0,   0,   0,  69, 
+      0,   0,   9, 242,   0,  16, 
+      0,   0,   0,   0,   0,  70, 
       0,  16,   0,   0,   0,   0, 
-      0,   6,  16,  16,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      8, 242,   0,  16,   0,   1, 
-      0,   0,   0,  86,  21,  16, 
-      0,   1,   0,   0,   0, 134, 
-    141,  32,   0,   0,   0,   0, 
-      0,   3,   0,   0,   0,  54, 
-      0,   0,   5, 162,   0,  16, 
-      0,   0,   0,   0,   0,   6, 
-      8,  16,   0,   1,   0,   0, 
+      0,  70, 126,  16,   0,   0, 
+      0,   0,   0,   0,  96,  16, 
+      0,   1,   0,   0,   0,  56, 
+      0,   0,   8, 242,   0,  16, 
+      0,   2,   0,   0,   0,  70, 
+     14,  16,   0,   2,   0,   0, 
+      0,  86, 133,  32,   0,   0, 
+      0,   0,   0,   6,   0,   0, 
+      0,  50,   0,   0,  10, 242, 
+      0,  16,   0,   0,   0,   0, 
+      0,   6, 128,  32,   0,   0, 
+      0,   0,   0,   6,   0,   0, 
+      0,  70,  14,  16,   0,   0, 
+      0,   0,   0,  70,  14,  16, 
+      0,   2,   0,   0,   0,  54, 
+      0,   0,   5,  82,   0,  16, 
+      0,   1,   0,   0,   0,   6, 
+     16,  16,   0,   1,   0,   0, 
       0,  69,   0,   0,   9, 242, 
       0,  16,   0,   2,   0,   0, 
-      0, 230,  10,  16,   0,   0, 
+      0,  70,   0,  16,   0,   1, 
       0,   0,   0,  70, 126,  16, 
       0,   0,   0,   0,   0,   0, 
      96,  16,   0,   1,   0,   0, 
       0,  69,   0,   0,   9, 242, 
-      0,  16,   0,   0,   0,   0, 
-      0,  70,   0,  16,   0,   0, 
+      0,  16,   0,   1,   0,   0, 
+      0, 230,  10,  16,   0,   1, 
       0,   0,   0,  70, 126,  16, 
       0,   0,   0,   0,   0,   0, 
      96,  16,   0,   1,   0,   0, 
-      0,  56,   0,   0,   8, 242, 
-      0,  16,   0,   2,   0,   0, 
+      0,  50,   0,   0,  10, 242, 
+      0,  16,   0,   0,   0,   0, 
+      0, 166, 138,  32,   0,   0, 
+      0,   0,   0,   6,   0,   0, 
       0,  70,  14,  16,   0,   2, 
-      0,   0,   0,  86, 133,  32, 
-      0,   0,   0,   0,   0,   6, 
-      0,   0,   0,  50,   0,   0, 
-     10, 242,   0,  16,   0,   0, 
-      0,   0,   0,   6, 128,  32, 
-      0,   0,   0,   0,   0,   6, 
       0,   0,   0,  70,  14,  16, 
-      0,   0,   0,   0,   0,  70, 
-     14,  16,   0,   2,   0,   0, 
-      0,  54,   0,   0,   5,  82, 
+      0,   0,   0,   0,   0,  50, 
+      0,   0,  10, 242,   0,  16, 
+      0,   0,   0,   0,   0, 246, 
+    143,  32,   0,   0,   0,   0, 
+      0,   6,   0,   0,   0,  70, 
+     14,  16,   0,   1,   0,   0, 
+      0,  70,  14,  16,   0,   0, 
+      0,   0,   0,  54,   0,   0, 
+      5,  82,   0,  16,   0,   1, 
+      0,   0,   0,   6,  16,  16, 
+      0,   1,   0,   0,   0,   0, 
+      0,   0,   8, 242,   0,  16, 
+      0,   2,   0,   0,   0,  86, 
+     21,  16,   0,   1,   0,   0, 
+      0, 134, 141,  32,   0,   0, 
+      0,   0,   0,   4,   0,   0, 
+      0,  54,   0,   0,   5, 162, 
       0,  16,   0,   1,   0,   0, 
-      0,   6,  16,  16,   0,   1, 
+      0,   6,   8,  16,   0,   2, 
       0,   0,   0,  69,   0,   0, 
-      9, 242,   0,  16,   0,   2, 
+      9, 242,   0,  16,   0,   3, 
       0,   0,   0,  70,   0,  16, 
       0,   1,   0,   0,   0,  70, 
     126,  16,   0,   0,   0,   0, 
       0,   0,  96,  16,   0,   1, 
       0,   0,   0,  69,   0,   0, 
       9, 242,   0,  16,   0,   1, 
       0,   0,   0, 230,  10,  16, 
       0,   1,   0,   0,   0,  70, 
     126,  16,   0,   0,   0,   0, 
       0,   0,  96,  16,   0,   1, 
       0,   0,   0,  50,   0,   0, 
      10, 242,   0,  16,   0,   0, 
-      0,   0,   0, 166, 138,  32, 
-      0,   0,   0,   0,   0,   6, 
+      0,   0,   0,   6, 128,  32, 
+      0,   0,   0,   0,   0,   7, 
       0,   0,   0,  70,  14,  16, 
-      0,   2,   0,   0,   0,  70, 
+      0,   3,   0,   0,   0,  70, 
      14,  16,   0,   0,   0,   0, 
       0,  50,   0,   0,  10, 242, 
       0,  16,   0,   0,   0,   0, 
-      0, 246, 143,  32,   0,   0, 
-      0,   0,   0,   6,   0,   0, 
+      0,  86, 133,  32,   0,   0, 
+      0,   0,   0,   7,   0,   0, 
       0,  70,  14,  16,   0,   1, 
       0,   0,   0,  70,  14,  16, 
       0,   0,   0,   0,   0,  54, 
       0,   0,   5,  82,   0,  16, 
-      0,   1,   0,   0,   0,   6, 
+      0,   2,   0,   0,   0,   6, 
      16,  16,   0,   1,   0,   0, 
-      0,   0,   0,   0,   8, 242, 
-      0,  16,   0,   2,   0,   0, 
-      0,  86,  21,  16,   0,   1, 
-      0,   0,   0, 134, 141,  32, 
-      0,   0,   0,   0,   0,   4, 
-      0,   0,   0,  54,   0,   0, 
-      5, 162,   0,  16,   0,   1, 
-      0,   0,   0,   6,   8,  16, 
-      0,   2,   0,   0,   0,  69, 
-      0,   0,   9, 242,   0,  16, 
-      0,   3,   0,   0,   0,  70, 
+      0,  69,   0,   0,   9, 242, 
       0,  16,   0,   1,   0,   0, 
-      0,  70, 126,  16,   0,   0, 
-      0,   0,   0,   0,  96,  16, 
-      0,   1,   0,   0,   0,  69, 
-      0,   0,   9, 242,   0,  16, 
-      0,   1,   0,   0,   0, 230, 
-     10,  16,   0,   1,   0,   0, 
-      0,  70, 126,  16,   0,   0, 
-      0,   0,   0,   0,  96,  16, 
-      0,   1,   0,   0,   0,  50, 
+      0,  70,   0,  16,   0,   2, 
+      0,   0,   0,  70, 126,  16, 
+      0,   0,   0,   0,   0,   0, 
+     96,  16,   0,   1,   0,   0, 
+      0,  69,   0,   0,   9, 242, 
+      0,  16,   0,   2,   0,   0, 
+      0, 230,  10,  16,   0,   2, 
+      0,   0,   0,  70, 126,  16, 
+      0,   0,   0,   0,   0,   0, 
+     96,  16,   0,   1,   0,   0, 
+      0,  50,   0,   0,  10, 242, 
+      0,  16,   0,   0,   0,   0, 
+      0, 166, 138,  32,   0,   0, 
+      0,   0,   0,   7,   0,   0, 
+      0,  70,  14,  16,   0,   1, 
+      0,   0,   0,  70,  14,  16, 
+      0,   0,   0,   0,   0,  50, 
       0,   0,  10, 242,   0,  16, 
-      0,   0,   0,   0,   0,   6, 
-    128,  32,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0, 246, 
+    143,  32,   0,   0,   0,   0, 
       0,   7,   0,   0,   0,  70, 
-     14,  16,   0,   3,   0,   0, 
+     14,  16,   0,   2,   0,   0, 
       0,  70,  14,  16,   0,   0, 
-      0,   0,   0,  50,   0,   0, 
-     10, 242,   0,  16,   0,   0, 
-      0,   0,   0,  86, 133,  32, 
-      0,   0,   0,   0,   0,   7, 
-      0,   0,   0,  70,  14,  16, 
-      0,   1,   0,   0,   0,  70, 
-     14,  16,   0,   0,   0,   0, 
-      0,  54,   0,   0,   5,  82, 
-      0,  16,   0,   2,   0,   0, 
-      0,   6,  16,  16,   0,   1, 
-      0,   0,   0,  69,   0,   0, 
-      9, 242,   0,  16,   0,   1, 
-      0,   0,   0,  70,   0,  16, 
-      0,   2,   0,   0,   0,  70, 
-    126,  16,   0,   0,   0,   0, 
-      0,   0,  96,  16,   0,   1, 
-      0,   0,   0,  69,   0,   0, 
-      9, 242,   0,  16,   0,   2, 
-      0,   0,   0, 230,  10,  16, 
-      0,   2,   0,   0,   0,  70, 
-    126,  16,   0,   0,   0,   0, 
-      0,   0,  96,  16,   0,   1, 
-      0,   0,   0,  50,   0,   0, 
-     10, 242,   0,  16,   0,   0, 
-      0,   0,   0, 166, 138,  32, 
-      0,   0,   0,   0,   0,   7, 
-      0,   0,   0,  70,  14,  16, 
-      0,   1,   0,   0,   0,  70, 
-     14,  16,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      8,  34,   0,  16,   0,   1, 
+      0,   0,   0,  26,  16,  16, 
+      0,   1,   0,   0,   0,  10, 
+    128,  32,   0,   0,   0,   0, 
+      0,   5,   0,   0,   0,  54, 
+      0,   0,   5,  18,   0,  16, 
+      0,   1,   0,   0,   0,  10, 
+     16,  16,   0,   1,   0,   0, 
+      0,  69,   0,   0,   9, 242, 
+      0,  16,   0,   1,   0,   0, 
+      0,  70,   0,  16,   0,   1, 
+      0,   0,   0,  70, 126,  16, 
+      0,   0,   0,   0,   0,   0, 
+     96,  16,   0,   1,   0,   0, 
       0,  50,   0,   0,  10, 242, 
       0,  16,   0,   0,   0,   0, 
-      0, 246, 143,  32,   0,   0, 
-      0,   0,   0,   7,   0,   0, 
-      0,  70,  14,  16,   0,   2, 
+      0,   6, 128,  32,   0,   0, 
+      0,   0,   0,   8,   0,   0, 
+      0,  70,  14,  16,   0,   1, 
       0,   0,   0,  70,  14,  16, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   8,  34,   0,  16, 
-      0,   1,   0,   0,   0,  26, 
-     16,  16,   0,   1,   0,   0, 
-      0,  10, 128,  32,   0,   0, 
+      0,   0,   0,   0,   0,  69, 
+      0,   0,   9, 242,   0,  16, 
+      0,   1,   0,   0,   0, 230, 
+     26,  16,   0,   1,   0,   0, 
+      0,  70, 126,  16,   0,   1, 
+      0,   0,   0,   0,  96,  16, 
+      0,   0,   0,   0,   0,  56, 
+      0,   0,   7, 242,  32,  16, 
+      0,   0,   0,   0,   0,  70, 
+     14,  16,   0,   0,   0,   0, 
+      0, 246,  15,  16,   0,   1, 
+      0,   0,   0,  62,   0,   0, 
+      1,  83,  84,  65,  84, 116, 
+      0,   0,   0,  31,   0,   0, 
+      0,   4,   0,   0,   0,   0, 
+      0,   0,   0,   3,   0,   0, 
+      0,   5,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  10, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   9,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  82, 
+     68,  69,  70,  12,   2,   0, 
+      0,   1,   0,   0,   0, 232, 
       0,   0,   0,   5,   0,   0, 
-      0,  54,   0,   0,   5,  18, 
-      0,  16,   0,   1,   0,   0, 
-      0,  10,  16,  16,   0,   1, 
-      0,   0,   0,  69,   0,   0, 
-      9, 242,   0,  16,   0,   1, 
-      0,   0,   0,  70,   0,  16, 
-      0,   1,   0,   0,   0,  70, 
-    126,  16,   0,   0,   0,   0, 
-      0,   0,  96,  16,   0,   1, 
-      0,   0,   0,  50,   0,   0, 
-     10, 242,   0,  16,   0,   0, 
-      0,   0,   0,   6, 128,  32, 
-      0,   0,   0,   0,   0,   8, 
-      0,   0,   0,  70,  14,  16, 
-      0,   1,   0,   0,   0,  70, 
-     14,  16,   0,   0,   0,   0, 
-      0,  69,   0,   0,   9, 242, 
-      0,  16,   0,   1,   0,   0, 
-      0, 230,  26,  16,   0,   1, 
-      0,   0,   0,  70, 126,  16, 
-      0,   1,   0,   0,   0,   0, 
-     96,  16,   0,   0,   0,   0, 
-      0,  56,   0,   0,   7, 242, 
-     32,  16,   0,   0,   0,   0, 
-      0,  70,  14,  16,   0,   0, 
-      0,   0,   0, 246,  15,  16, 
-      0,   1,   0,   0,   0,  62, 
-      0,   0,   1,  83,  84,  65, 
-     84, 116,   0,   0,   0,  31, 
-      0,   0,   0,   4,   0,   0, 
-      0,   0,   0,   0,   0,   3, 
-      0,   0,   0,   5,   0,   0, 
+      0,  28,   0,   0,   0,   0, 
+      4, 255, 255,   0,   1,   0, 
+      0, 216,   1,   0,   0, 188, 
+      0,   0,   0,   3,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   1, 
+      0,   0,   0,   0,   0,   0, 
+      0, 201,   0,   0,   0,   3, 
+      0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  10,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   9,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  82,  68,  69,  70,  12, 
-      2,   0,   0,   1,   0,   0, 
-      0, 232,   0,   0,   0,   5, 
-      0,   0,   0,  28,   0,   0, 
-      0,   0,   4, 255, 255,   0, 
-      1,   0,   0, 216,   1,   0, 
-      0, 188,   0,   0,   0,   3, 
+      0,   1,   0,   0,   0,   0, 
+      0,   0,   0, 216,   0,   0, 
+      0,   2,   0,   0,   0,   5, 
+      0,   0,   0,   4,   0,   0, 
+      0, 255, 255, 255, 255,   0, 
+      0,   0,   0,   1,   0,   0, 
+      0,  12,   0,   0,   0, 220, 
+      0,   0,   0,   2,   0,   0, 
+      0,   5,   0,   0,   0,   4, 
+      0,   0,   0, 255, 255, 255, 
+    255,   1,   0,   0,   0,   1, 
+      0,   0,   0,  12,   0,   0, 
+      0, 225,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   1,   0,   0,   0,   0, 
-      0,   0,   0, 201,   0,   0, 
-      0,   3,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0, 216, 
-      0,   0,   0,   2,   0,   0, 
-      0,   5,   0,   0,   0,   4, 
-      0,   0,   0, 255, 255, 255, 
-    255,   0,   0,   0,   0,   1, 
-      0,   0,   0,  12,   0,   0, 
-      0, 220,   0,   0,   0,   2, 
-      0,   0,   0,   5,   0,   0, 
-      0,   4,   0,   0,   0, 255, 
-    255, 255, 255,   1,   0,   0, 
-      0,   1,   0,   0,   0,  12, 
-      0,   0,   0, 225,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,   0,   0,   0,   0, 115, 
-     77,  97, 115, 107,  83,  97, 
-    109, 112, 108, 101, 114,   0, 
-    115,  83, 104,  97, 100, 111, 
-    119,  83,  97, 109, 112, 108, 
-    101, 114,   0, 116, 101, 120, 
-      0, 109,  97, 115, 107,   0, 
-     99,  98,  49,   0, 171, 171, 
-    171, 225,   0,   0,   0,   4, 
-      0,   0,   0,   0,   1,   0, 
-      0, 160,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  96,   1,   0,   0,   0, 
-      0,   0,   0,  48,   0,   0, 
-      0,   0,   0,   0,   0, 112, 
+      0,   0,   0, 115,  77,  97, 
+    115, 107,  83,  97, 109, 112, 
+    108, 101, 114,   0, 115,  83, 
+    104,  97, 100, 111, 119,  83, 
+     97, 109, 112, 108, 101, 114, 
+      0, 116, 101, 120,   0, 109, 
+     97, 115, 107,   0,  99,  98, 
+     49,   0, 171, 171, 171, 225, 
+      0,   0,   0,   4,   0,   0, 
+      0,   0,   1,   0,   0, 160, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  96, 
       1,   0,   0,   0,   0,   0, 
-      0, 128,   1,   0,   0,  48, 
-      0,   0,   0,  48,   0,   0, 
-      0,   2,   0,   0,   0, 144, 
-      1,   0,   0,   0,   0,   0, 
-      0, 160,   1,   0,   0,  96, 
-      0,   0,   0,  48,   0,   0, 
-      0,   2,   0,   0,   0, 172, 
-      1,   0,   0,   0,   0,   0, 
-      0, 188,   1,   0,   0, 144, 
-      0,   0,   0,  16,   0,   0, 
-      0,   0,   0,   0,   0, 200, 
-      1,   0,   0,   0,   0,   0, 
+      0,  48,   0,   0,   0,   0, 
+      0,   0,   0, 112,   1,   0, 
+      0,   0,   0,   0,   0, 128, 
+      1,   0,   0,  48,   0,   0, 
+      0,  48,   0,   0,   0,   2, 
+      0,   0,   0, 144,   1,   0, 
+      0,   0,   0,   0,   0, 160, 
+      1,   0,   0,  96,   0,   0, 
+      0,  48,   0,   0,   0,   2, 
+      0,   0,   0, 172,   1,   0, 
+      0,   0,   0,   0,   0, 188, 
+      1,   0,   0, 144,   0,   0, 
+      0,  16,   0,   0,   0,   0, 
+      0,   0,   0, 200,   1,   0, 
+      0,   0,   0,   0,   0,  66, 
+    108, 117, 114,  79, 102, 102, 
+    115, 101, 116, 115,  72,   0, 
+    171, 171, 171,   1,   0,   3, 
+      0,   1,   0,   4,   0,   3, 
+      0,   0,   0,   0,   0,   0, 
       0,  66, 108, 117, 114,  79, 
     102, 102, 115, 101, 116, 115, 
-     72,   0, 171, 171, 171,   1, 
+     86,   0, 171, 171, 171,   1, 
       0,   3,   0,   1,   0,   4, 
       0,   3,   0,   0,   0,   0, 
       0,   0,   0,  66, 108, 117, 
-    114,  79, 102, 102, 115, 101, 
-    116, 115,  86,   0, 171, 171, 
-    171,   1,   0,   3,   0,   1, 
-      0,   4,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,  66, 
-    108, 117, 114,  87, 101, 105, 
-    103, 104, 116, 115,   0,   1, 
-      0,   3,   0,   1,   0,   4, 
-      0,   3,   0,   0,   0,   0, 
-      0,   0,   0,  83, 104,  97, 
-    100, 111, 119,  67, 111, 108, 
-    111, 114,   0,   1,   0,   3, 
-      0,   1,   0,   4,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  77, 105,  99, 114, 111, 
-    115, 111, 102, 116,  32,  40, 
-     82,  41,  32,  72,  76,  83, 
-     76,  32,  83, 104,  97, 100, 
-    101, 114,  32,  67, 111, 109, 
-    112, 105, 108, 101, 114,  32, 
-     57,  46,  50,  57,  46,  57, 
-     53,  50,  46,  51,  49,  49, 
-     49,   0, 171, 171, 171,  73, 
-     83,  71,  78, 104,   0,   0, 
-      0,   3,   0,   0,   0,   8, 
-      0,   0,   0,  80,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0,  15, 
-      0,   0,   0,  92,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   1,   0,   0,   0,   3, 
-      3,   0,   0,  92,   0,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0,   1,   0,   0,   0,  12, 
-     12,   0,   0,  83,  86,  95, 
-     80, 111, 115, 105, 116, 105, 
-    111, 110,   0,  84,  69,  88, 
-     67,  79,  79,  82,  68,   0, 
-    171, 171, 171,  79,  83,  71, 
-     78,  44,   0,   0,   0,   1, 
+    114,  87, 101, 105, 103, 104, 
+    116, 115,   0,   1,   0,   3, 
+      0,   1,   0,   4,   0,   3, 
+      0,   0,   0,   0,   0,   0, 
+      0,  83, 104,  97, 100, 111, 
+    119,  67, 111, 108, 111, 114, 
+      0,   1,   0,   3,   0,   1, 
+      0,   4,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  77, 
+    105,  99, 114, 111, 115, 111, 
+    102, 116,  32,  40,  82,  41, 
+     32,  72,  76,  83,  76,  32, 
+     83, 104,  97, 100, 101, 114, 
+     32,  67, 111, 109, 112, 105, 
+    108, 101, 114,  32,  57,  46, 
+     50,  57,  46,  57,  53,  50, 
+     46,  51,  49,  49,  49,   0, 
+    171, 171, 171,  73,  83,  71, 
+     78, 104,   0,   0,   0,   3, 
       0,   0,   0,   8,   0,   0, 
-      0,  32,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
+      0,  80,   0,   0,   0,   0, 
+      0,   0,   0,   1,   0,   0, 
       0,   3,   0,   0,   0,   0, 
       0,   0,   0,  15,   0,   0, 
-      0,  83,  86,  95,  84,  97, 
-    114, 103, 101, 116,   0, 171, 
-    171,  27,  51,   0,   0,   0, 
-      0,   0,   0,   4,   0,   0, 
-      0,  48,   0,   0,   0,   0, 
-      0,   0,   0,   3,   0,   0, 
-      0, 255, 255, 255, 255,   0, 
-      0,   0,   0,  43,   0,   0, 
-      0,  15,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,  52,   0,   0,   0,  15, 
-      0,   0,   0,   0,   0,   0, 
-      0,  16,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,  62, 
+      0,  92,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   3,   0,   0,   0,   1, 
+      0,   0,   0,   3,   3,   0, 
+      0,  92,   0,   0,   0,   1, 
+      0,   0,   0,   0,   0,   0, 
+      0,   3,   0,   0,   0,   1, 
+      0,   0,   0,  12,  12,   0, 
+      0,  83,  86,  95,  80, 111, 
+    115, 105, 116, 105, 111, 110, 
+      0,  84,  69,  88,  67,  79, 
+     79,  82,  68,   0, 171, 171, 
+    171,  79,  83,  71,  78,  44, 
+      0,   0,   0,   1,   0,   0, 
+      0,   8,   0,   0,   0,  32, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   3, 
+      0,   0,   0,   0,   0,   0, 
+      0,  15,   0,   0,   0,  83, 
+     86,  95,  84,  97, 114, 103, 
+    101, 116,   0, 171, 171, 149, 
+     83,   0,   0,   0,   0,   0, 
+      0,   4,   0,   0,   0,  48, 
+      0,   0,   0,   0,   0,   0, 
+      0,   3,   0,   0,   0, 255, 
+    255, 255, 255,   0,   0,   0, 
+      0,  43,   0,   0,   0,  15, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  52, 
       0,   0,   0,  15,   0,   0, 
-      0,   0,   0,   0,   0,  32, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,  76,   0,   0, 
-      0, 160,   0,   0,   0,   0, 
-      0,   0,   0,   4,   0,   0, 
-      0, 255, 255, 255, 255,   0, 
-      0,   0,   0, 108,   0,   0, 
+      0,   0,   0,   0,   0,  16, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,  62,   0,   0, 
+      0,  15,   0,   0,   0,   0, 
+      0,   0,   0,  32,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  76,   0,   0,   0, 160, 
+      0,   0,   0,   0,   0,   0, 
+      0,   4,   0,   0,   0, 255, 
+    255, 255, 255,   0,   0,   0, 
+      0, 108,   0,   0,   0,  80, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0, 121, 
+      0,   0,   0,  80,   0,   0, 
+      0,   0,   0,   0,   0,  48, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0, 134,   0,   0, 
       0,  80,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0, 121,   0,   0,   0,  80, 
-      0,   0,   0,   0,   0,   0, 
-      0,  48,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0, 134, 
-      0,   0,   0,  80,   0,   0, 
+      0,   0,   0,  96,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0, 146,   0,   0,   0,  15, 
+      0,   0,   0,   0,   0,   0, 
+      0, 144,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0, 158, 
+      0,   0,   0, 112,   0,   0, 
+      0,   0,   0,   0,   0,   7, 
+      0,   0,   0, 255, 255, 255, 
+    255,   0,   0,   0,   0, 199, 
+      0,   0,   0, 171,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   1,   1,   0, 
+      0, 229,   0,   0,   0,   0, 
+      0,   0,   0,  48,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  47,   1,   0,   0,  19, 
+      1,   0,   0,   0,   0,   0, 
+      0,  64,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,  52, 
+      1,   0,   0, 229,   0,   0, 
+      0,   0,   0,   0,   0,  80, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,  94,   1,   0, 
+      0,  66,   1,   0,   0,   0, 
+      0,   0,   0,  88,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,  96,   1,   0,   0,  66, 
+      1,   0,   0,   0,   0,   0, 
+      0,  92,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0, 104, 
+      1,   0,   0,  66,   1,   0, 
       0,   0,   0,   0,   0,  96, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
-      0,   0,   0, 146,   0,   0, 
-      0,  15,   0,   0,   0,   0, 
-      0,   0,   0, 144,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0, 196,   0,   0,   0, 168, 
-      0,   0,   0,   0,   0,   0, 
-      0, 255, 255, 255, 255,   0, 
-      0,   0,   0, 200,   0,   0, 
-      0, 168,   0,   0,   0,   0, 
+      0,   0,   0, 153,   1,   0, 
+      0, 125,   1,   0,   0,   0, 
       0,   0,   0, 255, 255, 255, 
-    255,   0,   0,   0,   0, 246, 
-      0,   0,   0, 218,   0,   0, 
+    255,   0,   0,   0,   0, 157, 
+      1,   0,   0, 125,   1,   0, 
+      0,   0,   0,   0,   0, 255, 
+    255, 255, 255,   0,   0,   0, 
+      0, 203,   1,   0,   0, 175, 
+      1,   0,   0,   0,   0,   0, 
+      0, 255, 255, 255, 255,   4, 
+      0,   0,   0,  45,   0,   0, 
+      0,   0,   0,   0,   0,   1, 
+      0,   0,   0, 212,   1,   0, 
+      0,  55,   0,   0,   0,   0, 
+      0,   0,   0,   2,   0,   0, 
+      0, 153,   1,   0,   0,  46, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0, 224, 
+      1,   0,   0,  47,   0,   0, 
+      0,   0,   0,   0,   0,   1, 
+      0,   0,   0, 236,   1,   0, 
+      0,   0,   0,   0,   0, 248, 
+      1,   0,   0, 175,   1,   0, 
       0,   0,   0,   0,   0, 255, 
     255, 255, 255,   4,   0,   0, 
       0,  45,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0, 255,   0,   0,   0,  55, 
-      0,   0,   0,   0,   0,   0, 
-      0,   2,   0,   0,   0, 196, 
-      0,   0,   0,  46,   0,   0, 
+      0,   5,   2,   0,   0,  55, 
+      0,   0,   0,   0,   0,   0, 
+      0,   2,   0,   0,   0, 157, 
+      1,   0,   0,  46,   0,   0, 
       0,   0,   0,   0,   0,   1, 
-      0,   0,   0,  11,   1,   0, 
+      0,   0,   0,  17,   2,   0, 
       0,  47,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0,  23,   1,   0,   0,   0, 
-      0,   0,   0,  35,   1,   0, 
-      0, 218,   0,   0,   0,   0, 
+      0,  29,   2,   0,   0,   0, 
+      0,   0,   0,  41,   2,   0, 
+      0, 175,   1,   0,   0,   0, 
       0,   0,   0, 255, 255, 255, 
-    255,   4,   0,   0,   0,  45, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,  48, 
-      1,   0,   0,  55,   0,   0, 
+    255,   5,   0,   0,   0,  45, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,  56, 
+      2,   0,   0,  55,   0,   0, 
       0,   0,   0,   0,   0,   2, 
-      0,   0,   0, 200,   0,   0, 
+      0,   0,   0, 153,   1,   0, 
       0,  46,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0,  60,   1,   0,   0,  47, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,  72, 
-      1,   0,   0,   0,   0,   0, 
-      0,  84,   1,   0,   0, 218, 
-      0,   0,   0,   0,   0,   0, 
-      0, 255, 255, 255, 255,   5, 
-      0,   0,   0,  45,   0,   0, 
+      0,  68,   2,   0,   0,  47, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,  80, 
+      2,   0,   0,  52,   0,   0, 
       0,   0,   0,   0,   0,   1, 
-      0,   0,   0,  99,   1,   0, 
-      0,  55,   0,   0,   0,   0, 
-      0,   0,   0,   2,   0,   0, 
-      0, 196,   0,   0,   0,  46, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 111, 
-      1,   0,   0,  47,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0, 123,   1,   0, 
-      0,  52,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0, 135,   1,   0,   0,   0, 
-      0,   0,   0, 215,   1,   0, 
-      0, 187,   1,   0,   0,   0, 
-      0,   0,   0, 255, 255, 255, 
-    255,   2,   0,   0,   0,  19, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 227, 
-      1,   0,   0,  13,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0, 239,   1,   0, 
-      0,   0,   0,   0,   0,  34, 
-      2,   0,   0,   6,   2,   0, 
+      0,   0,   0,  92,   2,   0, 
+      0,   0,   0,   0,   0, 172, 
+      2,   0,   0, 144,   2,   0, 
       0,   0,   0,   0,   0, 255, 
     255, 255, 255,   2,   0,   0, 
-      0,  37,   0,   0,   0,   0, 
+      0,  19,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0,  47,   2,   0,   0,  44, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0,  59, 
+      0, 184,   2,   0,   0,  13, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0, 196, 
       2,   0,   0,   0,   0,   0, 
-      0,  71,   2,   0,   0,   6, 
+      0, 247,   2,   0,   0, 219, 
       2,   0,   0,   0,   0,   0, 
-      0, 255, 255, 255, 255,   8, 
+      0, 255, 255, 255, 255,   2, 
       0,   0,   0,  37,   0,   0, 
       0,   0,   0,   0,   0,   1, 
-      0,   0,   0,  84,   2,   0, 
-      0,  38,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,  96,   2,   0,   0,  39, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 108, 
-      2,   0,   0,  40,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0, 120,   2,   0, 
-      0,  41,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0, 132,   2,   0,   0,  42, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 144, 
-      2,   0,   0,  43,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0, 156,   2,   0, 
+      0,   0,   0,   4,   3,   0, 
       0,  44,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0, 168,   2,   0,   0,   0, 
-      0,   0,   0, 180,   2,   0, 
-      0,   1,   0,   0,   0,   0, 
-      0,   0,   0, 194,   2,   0, 
+      0,  16,   3,   0,   0,   0, 
+      0,   0,   0,  28,   3,   0, 
+      0, 219,   2,   0,   0,   0, 
+      0,   0,   0, 255, 255, 255, 
+    255,   8,   0,   0,   0,  37, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,  41, 
+      3,   0,   0,  38,   0,   0, 
+      0,   0,   0,   0,   0,   1, 
+      0,   0,   0,  53,   3,   0, 
+      0,  39,   0,   0,   0,   0, 
+      0,   0,   0,   1,   0,   0, 
+      0,  65,   3,   0,   0,  40, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,  77, 
+      3,   0,   0,  41,   0,   0, 
+      0,   0,   0,   0,   0,   1, 
+      0,   0,   0,  89,   3,   0, 
+      0,  42,   0,   0,   0,   0, 
+      0,   0,   0,   1,   0,   0, 
+      0, 101,   3,   0,   0,  43, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0, 113, 
+      3,   0,   0,  44,   0,   0, 
+      0,   0,   0,   0,   0,   1, 
+      0,   0,   0, 125,   3,   0, 
+      0,   0,   0,   0,   0, 137, 
+      3,   0,   0,   1,   0,   0, 
+      0,   0,   0,   0,   0, 151, 
+      3,   0,   0,   4,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   2,   0,   0,   0, 172, 
+      2,   0,   0,   6,   0,   0, 
+      0,   0,   0,   0,   0,   7, 
+      0,   0,   0, 194,   7,   0, 
+      0,   8,   0,   0,   0,   0, 
+      0,   0,   0,   1,   0,   0, 
+      0, 202,   7,   0,   0,   7, 
+      0,   0,   0,   0,   0,   0, 
+      0,   7,   0,   0,   0, 174, 
+     10,   0,   0, 182,  10,   0, 
+      0,   2,   0,   0,   0,   0, 
+      0,   0,   0, 151,   3,   0, 
       0,   4,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   2, 
-      0,   0,   0, 215,   1,   0, 
+      0,   0,   0, 172,   2,   0, 
       0,   6,   0,   0,   0,   0, 
       0,   0,   0,   7,   0,   0, 
-      0, 237,   6,   0,   0,   8, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 245, 
-      6,   0,   0,   7,   0,   0, 
+      0, 211,  17,   0,   0,   8, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0, 219, 
+     17,   0,   0,   7,   0,   0, 
       0,   0,   0,   0,   0,   7, 
-      0,   0,   0, 217,   9,   0, 
-      0, 225,   9,   0,   0,   1, 
-      0,   0,   0,   0,   0,   0, 
-      0, 194,   2,   0,   0,   4, 
+      0,   0,   0, 155,  27,   0, 
+      0, 163,  27,   0,   0,   4, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   2,   0,   0, 
-      0, 215,   1,   0,   0,   6, 
-      0,   0,   0,   0,   0,   0, 
-      0,   7,   0,   0,   0,  29, 
-     14,   0,   0,   8,   0,   0, 
+      0, 172,   2,   0,   0,   6, 
+      0,   0,   0,   0,   0,   0, 
+      0,   7,   0,   0,   0, 174, 
+     34,   0,   0,   8,   0,   0, 
       0,   0,   0,   0,   0,   1, 
-      0,   0,   0,  37,  14,   0, 
+      0,   0,   0, 182,  34,   0, 
       0,   7,   0,   0,   0,   0, 
       0,   0,   0,   7,   0,   0, 
-      0,   5,  18,   0,   0,  13, 
-     18,   0,   0,   3,   0,   0, 
-      0,   0,   0,   0,   0, 194, 
-      2,   0,   0,   7,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   0,   0,   0,   0,   0, 
-      0,   2,   0,   0,   0, 215, 
-      1,   0,   0,  10,   0,   0, 
-      0,   0,   0,   0,   0,   1, 
-      0,   0,   0,  37,  18,   0, 
-      0,  11,   0,   0,   0,   0, 
-      0,   0,   0,   1,   0,   0, 
-      0,  73,  18,   0,   0,   2, 
-      0,   0,   0,   0,   0,   0, 
-      0,   2,   0,   0,   0,  34, 
+      0,  86,  42,   0,   0,  94, 
+     42,   0,   0,   1,   0,   0, 
+      0,   0,   0,   0,   0, 151, 
+      3,   0,   0,   4,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   2,   0,   0,   0, 172, 
       2,   0,   0,   6,   0,   0, 
       0,   0,   0,   0,   0,   7, 
-      0,   0,   0, 125,  22,   0, 
+      0,   0,   0, 154,  46,   0, 
       0,   8,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0, 133,  22,   0,   0,   7, 
-      0,   0,   0,   0,   0,   0, 
-      0,   7,   0,   0,   0, 125, 
-     32,   0,   0, 133,  32,   0, 
+      0, 162,  46,   0,   0,   7, 
+      0,   0,   0,   0,   0,   0, 
+      0,   7,   0,   0,   0, 130, 
+     50,   0,   0, 138,  50,   0, 
+      0,   3,   0,   0,   0,   0, 
+      0,   0,   0, 151,   3,   0, 
       0,   7,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   2, 
-      0,   0,   0, 215,   1,   0, 
+      0,   0,   0, 172,   2,   0, 
       0,  10,   0,   0,   0,   0, 
       0,   0,   0,   1,   0,   0, 
-      0, 136,  32,   0,   0,  11, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 172, 
-     32,   0,   0,   2,   0,   0, 
+      0, 162,  50,   0,   0,  11, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0, 198, 
+     50,   0,   0,   2,   0,   0, 
       0,   0,   0,   0,   0,   2, 
-      0,   0,   0,  71,   2,   0, 
+      0,   0,   0, 247,   2,   0, 
       0,   6,   0,   0,   0,   0, 
       0,   0,   0,   7,   0,   0, 
-      0, 224,  36,   0,   0,   8, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 232, 
-     36,   0,   0,   7,   0,   0, 
+      0, 250,  54,   0,   0,   8, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,   2, 
+     55,   0,   0,   7,   0,   0, 
       0,   0,   0,   0,   0,   7, 
-      0,   0,   0, 164,  46,   0, 
-      0, 172,  46,   0,   0,   7, 
+      0,   0,   0, 250,  64,   0, 
+      0, 163,  27,   0,   0,   7, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   0,   0,   0, 
       0,   0,   0,   2,   0,   0, 
-      0, 215,   1,   0,   0,  10, 
-      0,   0,   0,   0,   0,   0, 
-      0,   1,   0,   0,   0, 175, 
-     46,   0,   0,  11,   0,   0, 
+      0, 172,   2,   0,   0,  10, 
+      0,   0,   0,   0,   0,   0, 
+      0,   1,   0,   0,   0,   2, 
+     65,   0,   0,  11,   0,   0, 
       0,   0,   0,   0,   0,   1, 
-      0,   0,   0, 211,  46,   0, 
+      0,   0,   0,  38,  65,   0, 
       0,   2,   0,   0,   0,   0, 
       0,   0,   0,   2,   0,   0, 
-      0,  71,   2,   0,   0,   6, 
-      0,   0,   0,   0,   0,   0, 
-      0,   7,   0,   0,   0,   7, 
-     51,   0,   0,   8,   0,   0, 
+      0,  28,   3,   0,   0,   6, 
+      0,   0,   0,   0,   0,   0, 
+      0,   7,   0,   0,   0,  90, 
+     69,   0,   0,   8,   0,   0, 
       0,   0,   0,   0,   0,   1, 
-      0,   0,   0,  15,  51,   0, 
+      0,   0,   0,  98,  69,   0, 
       0,   7,   0,   0,   0,   0, 
       0,   0,   0,   7,   0,   0, 
-      0, 195,  61,   0,   0
+      0,  30,  79,   0,   0,  38, 
+     79,   0,   0,   7,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   0,   0,   0,   0,   0, 
+      0,   2,   0,   0,   0, 172, 
+      2,   0,   0,  10,   0,   0, 
+      0,   0,   0,   0,   0,   1, 
+      0,   0,   0,  41,  79,   0, 
+      0,  11,   0,   0,   0,   0, 
+      0,   0,   0,   1,   0,   0, 
+      0,  77,  79,   0,   0,   2, 
+      0,   0,   0,   0,   0,   0, 
+      0,   2,   0,   0,   0,  28, 
+      3,   0,   0,   6,   0,   0, 
+      0,   0,   0,   0,   0,   7, 
+      0,   0,   0, 129,  83,   0, 
+      0,   8,   0,   0,   0,   0, 
+      0,   0,   0,   1,   0,   0, 
+      0, 137,  83,   0,   0,   7, 
+      0,   0,   0,   0,   0,   0, 
+      0,   7,   0,   0,   0,  61, 
+     94,   0,   0
 };
--- a/gfx/layers/Layers.h
+++ b/gfx/layers/Layers.h
@@ -429,16 +429,17 @@ public:
   /**
    * Creates a DrawTarget which is optimized for inter-operating with this
    * layermanager.
    */
   virtual TemporaryRef<mozilla::gfx::DrawTarget>
     CreateDrawTarget(const mozilla::gfx::IntSize &aSize,
                      mozilla::gfx::SurfaceFormat aFormat);
 
+  virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize) { return PR_TRUE; }
 
   /**
    * Return the name of the layer manager's backend.
    */
   virtual void GetBackendName(nsAString& aName) = 0;
 
   /**
    * This setter can be used anytime. The user data for all keys is
--- a/gfx/layers/d3d10/LayerManagerD3D10.h
+++ b/gfx/layers/d3d10/LayerManagerD3D10.h
@@ -110,16 +110,25 @@ public:
     void *CallbackData;
   };
 
   virtual void EndTransaction(DrawThebesLayerCallback aCallback,
                               void* aCallbackData);
 
   const CallbackInfo &GetCallbackInfo() { return mCurrentCallbackInfo; }
 
+  // D3D10 guarantees textures can be at least this size
+  enum {
+    MAX_TEXTURE_SIZE = 8192
+  };
+  virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize)
+  {
+    return aSize <= gfxIntSize(MAX_TEXTURE_SIZE, MAX_TEXTURE_SIZE);
+  }
+
   virtual already_AddRefed<ThebesLayer> CreateThebesLayer();
 
   virtual already_AddRefed<ContainerLayer> CreateContainerLayer();
 
   virtual already_AddRefed<ImageLayer> CreateImageLayer();
 
   virtual already_AddRefed<ColorLayer> CreateColorLayer();
 
--- a/gfx/layers/d3d9/DeviceManagerD3D9.cpp
+++ b/gfx/layers/d3d9/DeviceManagerD3D9.cpp
@@ -176,16 +176,17 @@ SwapChainD3D9::Reset()
   mSwapChain = nsnull;
 }
 
 #define HAS_CAP(a, b) (((a) & (b)) == (b))
 #define LACKS_CAP(a, b) !(((a) & (b)) == (b))
 
 DeviceManagerD3D9::DeviceManagerD3D9()
   : mDeviceResetCount(0)
+  , mMaxTextureSize(0)
   , mHasDynamicTextures(false)
   , mDeviceWasRemoved(false)
 {
 }
 
 DeviceManagerD3D9::~DeviceManagerD3D9()
 {
   LayerManagerD3D9::OnDeviceManagerDestroy(this);
@@ -641,16 +642,17 @@ DeviceManagerD3D9::VerifyCaps()
   if (LACKS_CAP(caps.TextureAddressCaps, D3DPTADDRESSCAPS_CLAMP)) {
     return false;
   }
 
   if (caps.MaxTextureHeight < 4096 ||
       caps.MaxTextureWidth < 4096) {
     return false;
   }
+  mMaxTextureSize = NS_MIN(caps.MaxTextureHeight, caps.MaxTextureWidth);
 
   if ((caps.PixelShaderVersion & 0xffff) < 0x200 ||
       (caps.VertexShaderVersion & 0xffff) < 0x200) {
     return false;
   }
 
   if (HAS_CAP(caps.Caps2, D3DCAPS2_DYNAMICTEXTURES)) {
     mHasDynamicTextures = true;
--- a/gfx/layers/d3d9/DeviceManagerD3D9.h
+++ b/gfx/layers/d3d9/DeviceManagerD3D9.h
@@ -163,16 +163,18 @@ public:
   PRUint32 GetDeviceResetCount() { return mDeviceResetCount; }
 
   /**
    * We keep a list of all layers here that may have hardware resource allocated
    * so we can clean their resources on reset.
    */
   nsTArray<LayerD3D9*> mLayersWithResources;
 
+  PRInt32 GetMaxTextureSize() { return mMaxTextureSize; }
+
 private:
   friend class SwapChainD3D9;
 
   ~DeviceManagerD3D9();
 
   /**
    * This function verifies the device is ready for rendering, internally this
    * will test the cooperative level of the device and reset the device if
@@ -233,16 +235,18 @@ private:
    */
   HWND mFocusWnd;
 
   /* we use this to help track if our device temporarily or permanently lost */
   HMONITOR mDeviceMonitor;
 
   PRUint32 mDeviceResetCount;
 
+  PRUint32 mMaxTextureSize;
+
   /* If this device supports dynamic textures */
   bool mHasDynamicTextures;
 
   /* If this device was removed */
   bool mDeviceWasRemoved;
 
   /* Nv3DVUtils instance */ 
   nsAutoPtr<Nv3DVUtils> mNv3DVUtils; 
--- a/gfx/layers/d3d9/LayerManagerD3D9.h
+++ b/gfx/layers/d3d9/LayerManagerD3D9.h
@@ -136,16 +136,24 @@ public:
 
   virtual void EndTransaction(DrawThebesLayerCallback aCallback,
                               void* aCallbackData);
 
   const CallbackInfo &GetCallbackInfo() { return mCurrentCallbackInfo; }
 
   void SetRoot(Layer* aLayer);
 
+  virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize)
+  {
+    if (!mDeviceManager)
+      return false;
+    PRInt32 maxSize = mDeviceManager->GetMaxTextureSize();
+    return aSize <= gfxIntSize(maxSize, maxSize);
+  }
+
   virtual already_AddRefed<ThebesLayer> CreateThebesLayer();
 
   virtual already_AddRefed<ContainerLayer> CreateContainerLayer();
 
   virtual already_AddRefed<ImageLayer> CreateImageLayer();
 
   virtual already_AddRefed<ColorLayer> CreateColorLayer();
 
--- a/gfx/layers/opengl/LayerManagerOGL.h
+++ b/gfx/layers/opengl/LayerManagerOGL.h
@@ -133,16 +133,24 @@ public:
   void EndConstruction();
 
   virtual bool EndEmptyTransaction();
   virtual void EndTransaction(DrawThebesLayerCallback aCallback,
                               void* aCallbackData);
 
   virtual void SetRoot(Layer* aLayer) { mRoot = aLayer; }
 
+  virtual bool CanUseCanvasLayerForSize(const gfxIntSize &aSize)
+  {
+      if (!mGLContext)
+          return false;
+      PRInt32 maxSize = mGLContext->GetMaxTextureSize();
+      return aSize <= gfxIntSize(maxSize, maxSize);
+  }
+
   virtual already_AddRefed<ThebesLayer> CreateThebesLayer();
 
   virtual already_AddRefed<ContainerLayer> CreateContainerLayer();
 
   virtual already_AddRefed<ImageLayer> CreateImageLayer();
 
   virtual already_AddRefed<ColorLayer> CreateColorLayer();
 
--- a/js/src/tests/e4x/GC/jstests.list
+++ b/js/src/tests/e4x/GC/jstests.list
@@ -1,11 +1,11 @@
 url-prefix ../../jsreftest.html?test=e4x/GC/
-script regress-280844-1.js
-script regress-280844-2.js
+skip-if(Android) script regress-280844-1.js
+skip-if(Android) script regress-280844-2.js
 skip-if(!xulRuntime.shell) script regress-292455.js # does not always dismiss alert
 script regress-313952-01.js
 script regress-313952-02.js
 script regress-324117.js
 skip script regress-324278.js # slow
 script regress-339785.js
 script regress-357063-01.js
 script regress-357063-02.js
--- a/js/src/tests/e4x/Regress/jstests.list
+++ b/js/src/tests/e4x/Regress/jstests.list
@@ -75,22 +75,22 @@ script regress-373082.js
 script regress-374106.js
 script regress-374112.js
 script regress-374116.js
 script regress-374160.js
 script regress-375406.js
 script regress-378492.js
 script regress-380833.js
 script regress-383255.js
-silentfail script regress-394941.js
+skip-if(Android) silentfail script regress-394941.js
 script regress-407323.js
 script regress-426520.js
 script regress-453915.js
-silentfail script regress-458679-01.js
-silentfail script regress-458679-02.js
+skip-if(Android) silentfail script regress-458679-01.js
+skip-if(Android) silentfail script regress-458679-02.js
 script regress-460180.js
 script regress-465063.js
 script regress-470619.js
-script regress-473709.js
-script regress-474319.js
+skip-if(Android) script regress-473709.js
+skip-if(Android) script regress-474319.js
 script regress-477053.js
 script regress-561031.js
 script regress-587434.js
--- a/js/src/tests/e4x/XML/jstests.list
+++ b/js/src/tests/e4x/XML/jstests.list
@@ -43,14 +43,14 @@ script 13.4.4.39.js
 script 13.4.4.4.js
 script 13.4.4.40.js
 script 13.4.4.5.js
 script 13.4.4.6.js
 script 13.4.4.7.js
 script 13.4.4.8.js
 script 13.4.4.9.js
 script regress-291930.js
-silentfail script regress-324422-1.js
+skip-if(Android) silentfail script regress-324422-1.js
 skip script regress-324422-2.js # slow
 skip script regress-324688.js # bug 528404 - disable due to random timeouts
 script regress-336921.js
 script regress-376773.js
 script regress-621464.js
--- a/js/src/tests/ecma_5/Function/jstests.list
+++ b/js/src/tests/ecma_5/Function/jstests.list
@@ -4,10 +4,10 @@ script 15.3.4.3-01.js
 script arguments-caller-callee.js
 script function-caller.js
 script strict-arguments.js
 script arguments-property-attributes.js
 script function-bind.js
 script function-call.js
 script redefine-arguments-length.js
 script builtin-no-prototype.js
-script Function-arguments-gc.js
+skip-if(Android) script Function-arguments-gc.js
 script builtin-no-construct.js
--- a/js/src/tests/js1_5/Array/jstests.list
+++ b/js/src/tests/js1_5/Array/jstests.list
@@ -1,25 +1,25 @@
 url-prefix ../../jsreftest.html?test=js1_5/Array/
 script 11.1.4.js
 script array-001.js
 random script regress-101964.js # bogus perf test (bug 467263)
 script regress-107138.js
 fails-if(!xulRuntime.shell) script regress-108440.js # bug - NS_ERROR_DOM_NOT_SUPPORTED_ERR line 74
 script regress-154338.js
-skip-if(xulRuntime.XPCOMABI.match(/x86_64/)) script regress-157652.js # No test results
+skip-if(xulRuntime.XPCOMABI.match(/x86_64/)||Android) script regress-157652.js # No test results
 script regress-178722.js
 script regress-255555.js
 script regress-299644.js
 script regress-300858.js
 script regress-310351.js
 script regress-311515.js
 script regress-313153.js
 script regress-315509-01.js
-skip-if(xulRuntime.XPCOMABI.match(/x86_64/)) script regress-330812.js # No test results
+skip-if(xulRuntime.XPCOMABI.match(/x86_64/)||Android) script regress-330812.js # No test results
 script regress-345961.js
 script regress-348810.js
 script regress-350256-01.js
 script regress-350256-02.js
 script regress-360681-01.js
 script regress-360681-02.js
 script regress-364104.js
 script regress-422286.js
--- a/js/src/tests/js1_5/Exceptions/jstests.list
+++ b/js/src/tests/js1_5/Exceptions/jstests.list
@@ -7,10 +7,10 @@ script regress-123002.js
 script regress-232182.js
 script regress-257751.js
 script regress-273931.js
 fails-if(Android) script regress-315147.js
 script regress-332472.js
 script regress-333728.js
 script regress-342359.js
 script regress-347674.js
-script regress-350650-n.js
+skip-if(Android) script regress-350650-n.js
 script regress-350837.js
--- a/js/src/tests/js1_5/Function/jstests.list
+++ b/js/src/tests/js1_5/Function/jstests.list
@@ -2,14 +2,14 @@ url-prefix ../../jsreftest.html?test=js1
 script 10.1.6-01.js
 script 10.1.6.js
 script 15.3.4.4.js
 script regress-123371.js
 script regress-178389.js
 script regress-222029-001.js
 script regress-222029-002.js
 script regress-292215.js
-#silentfail script regress-338001.js # disabled pending bug 657444
-#silentfail script regress-338121-01.js # disabled pending bug 657444
-#silentfail script regress-338121-02.js # disabled pending bug 657444
-#silentfail script regress-338121-03.js # disabled pending bug 657444
+#skip-if(Android) silentfail script regress-338001.js # disabled pending bug 657444
+#skip-if(Android) silentfail script regress-338121-01.js # disabled pending bug 657444
+#skip-if(Android) silentfail script regress-338121-02.js # disabled pending bug 657444
+#skip-if(Android) silentfail script regress-338121-03.js # disabled pending bug 657444
 script regress-344052.js
 script regress-364023.js
--- a/js/src/tests/js1_5/GC/jstests.list
+++ b/js/src/tests/js1_5/GC/jstests.list
@@ -12,15 +12,15 @@ script regress-316885-02.js
 script regress-316885-03.js
 skip-if(!xulRuntime.shell) slow script regress-319980-01.js
 skip script regress-324278.js # slow, obsoleted by 98409 fix
 script regress-331719.js
 skip script regress-338653.js # slow, killed on x86_64
 script regress-341877-01.js
 script regress-341877-02.js
 skip script regress-346794.js # slow, killed
-script regress-348532.js
+skip-if(Android) script regress-348532.js
 script regress-352606.js
 skip script regress-383269-01.js # unreliable - based on GC timing
 skip script regress-383269-02.js # unreliable - based on GC timing
 script regress-390078.js
 script regress-418128.js
-script regress-440558.js
+skip-if(Android) script regress-440558.js
--- a/js/src/tests/js1_5/Regress/jstests.list
+++ b/js/src/tests/js1_5/Regress/jstests.list
@@ -86,17 +86,17 @@ script regress-261886.js
 skip script regress-261887.js # we violate the spec here with our new iterators
 skip script regress-271716-n.js # never terminates
 script regress-274035.js
 script regress-274888.js
 script regress-275378.js
 script regress-276103.js
 script regress-278873.js
 script regress-280769-1.js
-silentfail script regress-280769-2.js
+skip-if(Android) silentfail script regress-280769-2.js
 script regress-280769-3.js
 script regress-280769-4.js
 script regress-280769-5.js
 script regress-280769.js
 script regress-281606.js
 script regress-281930.js
 script regress-283477.js
 script regress-288688.js
@@ -106,31 +106,31 @@ script regress-290656.js
 script regress-294191.js
 script regress-294195-01.js
 script regress-294195-02.js
 script regress-294302.js
 script regress-295052.js
 script regress-295666.js
 script regress-299209.js
 script regress-299641.js
-skip-if(!xulRuntime.shell) script regress-303213.js # bug 524731
+skip-if(!xulRuntime.shell||Android) script regress-303213.js # bug 524731
 script regress-306633.js
 script regress-306727.js
 script regress-306794.js
 script regress-308085.js
 script regress-308566.js
 script regress-309242.js
 script regress-310295.js
 script regress-310607.js
 script regress-310993.js
 script regress-311071.js
 script regress-311629.js
 script regress-312260.js
 script regress-31255.js
-script regress-312588.js
+skip-if(Android) script regress-312588.js
 random script regress-313967-01.js # BigO
 random script regress-313967-02.js # BigO
 skip-if(xulRuntime.OS=="WINNT"&&isDebugBuild) slow script regress-314401.js
 script regress-315974.js
 script regress-315990.js
 script regress-317476.js
 fails-if(Android) script regress-317533.js
 script regress-317714-01.js
@@ -146,18 +146,18 @@ script regress-322430.js
 fails-if(Android) script regress-323314-1.js
 script regress-325925.js
 script regress-326453.js
 script regress-326467.js
 script regress-328012.js
 script regress-328664.js
 script regress-328897.js
 script regress-329383.js
-script regress-329530.js
-script regress-330352.js
+skip-if(Android) script regress-329530.js
+skip-if(Android) script regress-330352.js
 script regress-330951.js
 script regress-334807-01.js
 script regress-334807-02.js
 script regress-334807-03.js
 script regress-334807-04.js
 script regress-334807-05.js
 script regress-334807-06.js
 script regress-336100.js
--- a/js/src/tests/js1_5/extensions/jstests.list
+++ b/js/src/tests/js1_5/extensions/jstests.list
@@ -39,19 +39,19 @@ script regress-315509-02.js
 script regress-319683.js
 script regress-322957.js
 script regress-327608.js
 script regress-328443.js
 script regress-328556.js
 skip script regress-330569.js # Yarr doesn't bail on complex regexps.
 script regress-333541.js
 skip script regress-335700.js # bug xxx - reftest hang, BigO
-skip-if(!xulRuntime.shell) slow script regress-336409-1.js # no results reported.
+skip-if(!xulRuntime.shell||Android) slow script regress-336409-1.js # no results reported.
 skip-if(!xulRuntime.shell&&((Android||(isDebugBuild&&xulRuntime.OS=="Linux")||xulRuntime.XPCOMABI.match(/x86_64/)))) silentfail script regress-336409-2.js # can fail silently due to out of memory, bug 615011 - timeouts on slow debug Linux
-skip-if(!xulRuntime.shell) silentfail script regress-336410-1.js # can fail silently due to out of memory
+skip-if(!xulRuntime.shell||Android) silentfail script regress-336410-1.js # can fail silently due to out of memory
 skip-if(!xulRuntime.shell&&((isDebugBuild&&xulRuntime.OS=="Linux")||Android||xulRuntime.XPCOMABI.match(/x86_64/)||xulRuntime.OS=="WINNT")) silentfail script regress-336410-2.js # can fail silently due to out of memory, bug 621348 - timeouts on slow debug Linux
 script regress-338804-01.js
 script regress-338804-02.js
 script regress-338804-03.js
 script regress-339685.js
 script regress-341956-01.js
 script regress-341956-02.js
 script regress-341956-03.js
@@ -147,21 +147,21 @@ script regress-385134.js
 script regress-385393-02.js
 script regress-385393-09.js
 script regress-390597.js
 script regress-390598.js
 script regress-394967.js
 script regress-396326.js
 skip script regress-406572.js
 script regress-407019.js
-script regress-407501.js
+skip-if(Android) script regress-407501.js
 skip-if(!xulRuntime.shell) slow script regress-407720.js
 script regress-412926.js
-script regress-414755.js
-script regress-416354.js
+skip-if(Android) script regress-414755.js
+skip-if(Android) script regress-416354.js
 script regress-416460.js
 script regress-416834.js
 skip script regress-418730.js # obsolete test
 script regress-420612.js
 script regress-420869-01.js
 skip script regress-421621.js # obsolete test
 require-or(debugMode,skip) script regress-422137.js
 script regress-422592.js
@@ -179,38 +179,38 @@ fails script regress-435345-01.js
 script regress-435497-01.js
 script regress-435497-02.js
 script regress-435497-03.js
 script regress-436741.js
 skip script regress-437288-01.js # obsolete test
 script regress-44009.js
 script regress-443569.js
 script regress-446386.js
-script regress-452168.js
+skip-if(Android) script regress-452168.js
 script regress-452178.js
 script regress-452329.js
 script regress-452338.js
 script regress-452565.js
 script regress-453249.js
 script regress-454040.js
-script regress-454142.js
+skip-if(Android) script regress-454142.js
 script regress-454704.js
 script regress-455380.js
 script regress-455408.js
 script regress-455413.js
 script regress-459606.js
 script regress-462734-02.js
 script regress-462734-03.js
 script regress-462734-04.js
 script regress-465145.js
 script regress-465276.js
 script regress-469625.js
 script regress-469761.js
 script regress-472599.js
-script regress-472787.js
+skip-if(Android) script regress-472787.js
 script regress-476447.js
 script regress-479487.js
 script regress-479551.js
 script regress-480579.js
 script regress-481516.js
 script regress-488995.js
 script regress-50447-1.js
 skip script regress-50447.js # obsolete test
--- a/js/src/tests/js1_6/extensions/jstests.list
+++ b/js/src/tests/js1_6/extensions/jstests.list
@@ -1,17 +1,17 @@
 url-prefix ../../jsreftest.html?test=js1_6/extensions/
 script regress-312385-01.js
 script regress-352392.js
 script regress-385393-08.js
 script regress-414098.js
 fails-if(!xulRuntime.shell) script regress-455464-01.js # bug - NS_ERROR_DOM_NOT_SUPPORTED_ERR line 1
 fails-if(!xulRuntime.shell) script regress-455464-02.js # bug - NS_ERROR_DOM_NOT_SUPPORTED_ERR line 49
 fails-if(!xulRuntime.shell) script regress-455464-03.js # bug - NS_ERROR_DOM_NOT_SUPPORTED_ERR line 1
-fails-if(!xulRuntime.shell&&!isDebugBuild) skip-if(!xulRuntime.shell&&isDebugBuild) script regress-455464-04.js # bug xxx - hangs reftests in debug, ### bug xxx - NS_ERROR_DOM_NOT_SUPPORTED_ERR in opt
-skip-if(!xulRuntime.shell) slow script regress-456826.js # bug 504632
+fails-if(!xulRuntime.shell&&!isDebugBuild) skip-if((!xulRuntime.shell&&isDebugBuild)||Android) script regress-455464-04.js # bug xxx - hangs reftests in debug, ### bug xxx - NS_ERROR_DOM_NOT_SUPPORTED_ERR in opt
+skip-if(!xulRuntime.shell||Android) slow script regress-456826.js # bug 504632
 script regress-457521.js
 script regress-465443.js
 script regress-470310.js
 script regress-472508.js
 fails-if(!xulRuntime.shell) script regress-475144.js # NS_ERROR_DOM_NOT_SUPPORTED_ERR
 script regress-479567.js
 script regress-565521.js
--- a/js/src/tests/js1_7/GC/jstests.list
+++ b/js/src/tests/js1_7/GC/jstests.list
@@ -1,3 +1,3 @@
 url-prefix ../../jsreftest.html?test=js1_7/GC/
 script regress-341675.js
-script regress-381374.js
+skip-if(Android) script regress-381374.js
--- a/js/src/tests/js1_7/extensions/jstests.list
+++ b/js/src/tests/js1_7/extensions/jstests.list
@@ -58,13 +58,13 @@ script regress-469234.js
 script regress-469405-01.js
 script regress-469405-02.js
 script regress-470176.js
 script regress-470300-01.js
 script regress-470300-02.js
 script regress-473282.js
 script regress-474771-01.js
 script regress-474771-02.js
-script regress-476257.js
+skip-if(Android) script regress-476257.js
 script regress-477048.js
 script regress-589112.js
 script regress-590813.js
 script regress-591450.js
--- a/js/src/tests/js1_7/regress/jstests.list
+++ b/js/src/tests/js1_7/regress/jstests.list
@@ -60,9 +60,9 @@ script regress-465424.js
 script regress-465484.js
 script regress-465686.js
 script regress-469239-01.js
 script regress-469239-02.js
 script regress-470223.js
 script regress-470388-01.js
 script regress-470388-02.js
 script regress-470388-03.js
-script regress-474771.js
+skip-if(Android) script regress-474771.js
--- a/js/src/tests/js1_8/extensions/jstests.list
+++ b/js/src/tests/js1_8/extensions/jstests.list
@@ -31,15 +31,15 @@ skip script regress-471197.js
 script regress-472450-03.js
 script regress-472450-04.js
 script regress-473040.js
 skip script regress-475971.js
 skip-if(!xulRuntime.shell) slow script regress-476414-01.js
 skip-if(!xulRuntime.shell) slow script regress-476414-02.js
 fails-if(!xulRuntime.shell) script regress-476427.js # NS_ERROR_DOM_NOT_SUPPORTED_ERR
 script regress-476653.js
-script regress-476869.js
+skip-if(Android) script regress-476869.js
 script regress-476871-02.js
 skip script regress-479252.js
 skip script regress-479381.js
 script regress-481989.js
 script regress-482263.js
 skip script simple-tree.js
--- a/js/src/tests/js1_8/regress/jstests.list
+++ b/js/src/tests/js1_8/regress/jstests.list
@@ -21,17 +21,17 @@ script regress-459389.js
 script regress-461930.js
 script regress-461932.js
 script regress-463334-01.js
 script regress-463334-02.js
 script regress-463783.js
 script regress-464092-01.js
 script regress-464092-02.js
 script regress-464096.js
-script regress-464418.js
+skip-if(Android) script regress-464418.js
 script regress-464978.js
 script regress-465220.js
 script regress-465234.js
 script regress-465239.js
 script regress-465241.js
 script regress-465249.js
 script regress-465261.js
 script regress-465308.js
@@ -59,25 +59,25 @@ script regress-467495-02.js
 script regress-467495-03.js
 script regress-467495-04.js
 script regress-467495-05.js
 script regress-467495-06.js
 script regress-468711.js
 script regress-469547.js
 script regress-469625-02.js
 script regress-469625-03.js
-script regress-471373.js # bug xxx No test results reported
+skip-if(Android) script regress-471373.js # bug xxx No test results reported
 script regress-471660.js
 script regress-472450-01.js
 script regress-472450-02.js
 script regress-472528-01.js
 script regress-472528-02.js
 script regress-472703.js
 script regress-474769.js
-script regress-474771.js
+skip-if(Android) script regress-474771.js
 script regress-474935.js
 script regress-476655.js
 script regress-477234.js
 script regress-477581.js
 script regress-478205.js
 script regress-479353.js
 script regress-479740.js
 script regress-481800.js
--- a/js/src/tests/js1_8_1/extensions/jstests.list
+++ b/js/src/tests/js1_8_1/extensions/jstests.list
@@ -4,12 +4,12 @@ script regress-353214-02.js
 script regress-437288-01.js
 script regress-452498-162.js
 script regress-452498-193.js
 script regress-452498-196.js
 script regress-452498-224.js
 script regress-466905-04.js
 skip script regress-466905-05.js  # no-op in browser, fails in shell - see bug 554793
 script regress-477158.js
-script regress-477187.js
+skip-if(Android) script regress-477187.js
 script regress-520572.js
 script new-parenthesization.js
 fails-if(Android) script strict-warning.js
--- a/js/src/tests/js1_8_1/regress/jstests.list
+++ b/js/src/tests/js1_8_1/regress/jstests.list
@@ -3,17 +3,17 @@ script regress-420399.js
 script regress-452498-006.js
 script regress-452498-027.js
 script regress-452498-030.js
 script regress-452498-038.js
 script regress-452498-039.js
 script regress-452498-040.js
 script regress-452498-050.js
 script regress-452498-051.js
-script regress-452498-052-a.js
+skip-if(Android) script regress-452498-052-a.js
 script regress-452498-052.js
 script regress-452498-053.js
 script regress-452498-054.js
 script regress-452498-058.js
 script regress-452498-062.js
 script regress-452498-063.js
 script regress-452498-068.js
 script regress-452498-071.js
@@ -23,17 +23,17 @@ script regress-452498-074.js
 script regress-452498-075.js
 script regress-452498-076.js
 script regress-452498-077.js
 script regress-452498-079.js
 script regress-452498-082.js
 script regress-452498-091.js
 script regress-452498-092.js
 script regress-452498-098.js
-script regress-452498-099-a.js
+skip-if(Android) script regress-452498-099-a.js
 script regress-452498-099.js
 script regress-452498-101.js
 script regress-452498-102.js
 script regress-452498-103.js
 script regress-452498-104.js
 script regress-452498-107.js
 script regress-452498-108.js
 script regress-452498-110.js
@@ -45,17 +45,17 @@ script regress-452498-116.js
 script regress-452498-117.js
 script regress-452498-118.js
 script regress-452498-119.js
 script regress-452498-121.js
 script regress-452498-123.js
 script regress-452498-129.js
 script regress-452498-130.js
 script regress-452498-131.js
-script regress-452498-135-a.js
+skip-if(Android) script regress-452498-135-a.js
 script regress-452498-135.js
 script regress-452498-138.js
 script regress-452498-139.js
 script regress-452498-155.js
 script regress-452498-160.js
 script regress-452498-168-1.js
 skip script regress-452498-168-2.js # slow
 script regress-452498-176.js
@@ -63,25 +63,25 @@ script regress-452498-178.js
 script regress-452498-181.js
 script regress-452498-184.js
 script regress-452498-185.js
 script regress-452498-187.js
 script regress-452498-191.js
 script regress-452498-192.js
 script regress-466905-01.js
 script regress-466905-02.js
-script regress-479430-01.js
-script regress-479430-02.js
-script regress-479430-03.js
-script regress-479430-04.js
-script regress-479430-05.js
+skip-if(Android) script regress-479430-01.js
+skip-if(Android) script regress-479430-02.js
+skip-if(Android) script regress-479430-03.js
+skip-if(Android) script regress-479430-04.js
+skip-if(Android) script regress-479430-05.js
 script regress-495773.js
 script regress-495907.js
 script regress-496922.js
 script regress-507053.js
 script regress-507295.js
 script regress-507424.js
 script regress-509354.js
 script regress-515885.js
-skip-if(isDebugBuild&&!xulRuntime.shell)  script regress-524743.js # hang
+skip-if((isDebugBuild&&!xulRuntime.shell)||Android)  script regress-524743.js # hang
 script regress-522123.js
 script regress-524264.js
 script regress-530879.js
--- a/js/src/tests/js1_8_5/extensions/jstests.list
+++ b/js/src/tests/js1_8_5/extensions/jstests.list
@@ -4,17 +4,17 @@ script typedarray-prototype.js
 script arraybuffer-prototype.js
 script typedarray-subarray-of-subarray.js
 skip-if(!xulRuntime.shell) script worker-error.js  # these tests sometimes hang in browser, bug 559954, bug 562333
 skip-if(!xulRuntime.shell) script worker-error-propagation.js
 skip-if(!xulRuntime.shell) script worker-fib.js
 skip-if(!xulRuntime.shell) script worker-init.js
 skip-if(!xulRuntime.shell) script worker-simple.js
 skip-if(!xulRuntime.shell) script worker-terminate.js
-skip-if(!xulRuntime.shell) script worker-timeout.js
+skip-if(!xulRuntime.shell||Android) script worker-timeout.js
 script regress-558541.js
 script scripted-proxies.js
 script watch-undefined-setter.js
 script array-length-protochange.js
 script parseInt-octal.js
 script proxy-enumerateOwn-duplicates.js
 skip-if(!xulRuntime.shell) script proxy-proto-setter.js
 skip-if(!xulRuntime.shell) script reflect-parse.js
--- a/js/src/tests/js1_8_5/regress/jstests.list
+++ b/js/src/tests/js1_8_5/regress/jstests.list
@@ -24,17 +24,17 @@ script regress-554955-6.js
 script regress-555246-0.js
 script regress-555246-1.js
 script regress-559402-1.js
 script regress-559402-2.js
 script regress-559438.js
 script regress-560101.js
 script regress-560998-1.js
 script regress-560998-2.js
-script regress-563210.js
+skip-if(Android) script regress-563210.js
 script regress-563221.js
 script regress-566549.js
 script regress-566914.js
 script regress-567152.js
 script regress-569306.js
 script regress-569464.js
 script regress-571014.js
 script regress-573875.js
@@ -79,17 +79,17 @@ script regress-610026.js
 script regress-609617.js
 script regress-617405-1.js
 script regress-617405-2.js
 script regress-618572.js
 skip-if(!xulRuntime.shell) script regress-618576.js  # uses evalcx
 fails-if(!xulRuntime.shell) script regress-618652.js
 script regress-619003-1.js
 script regress-619003-2.js
-script regress-620376-1.js
+skip-if(Android) script regress-620376-1.js
 script regress-620376-2.js
 script regress-621814.js
 script regress-620750.js
 script regress-624199.js
 script regress-624547.js
 script regress-624968.js
 script regress-626436.js
 script regress-633741.js
--- a/js/src/xpconnect/tests/mochitest/Makefile.in
+++ b/js/src/xpconnect/tests/mochitest/Makefile.in
@@ -49,17 +49,16 @@ include $(topsrcdir)/config/rules.mk
 		bug92773_helper.html \
 		bug504877_helper.html \
 		bug571849_helper.html \
 		chrome_wrappers_helper.html \
 		file_doublewrappedcompartments.html \
 		file_evalInSandbox.html \
 		file_wrappers-2.html \
 		test_bug92773.html \
-		test_bug361111.xul \
 		test_bug384632.html \
 		test_bug390488.html \
 		test_bug393269.html \
 		test_bug396851.html \
 		test_bug428021.html \
 		test_bug446584.html \
 		test_bug462428.html \
 		test_bug478438.html \
@@ -90,20 +89,28 @@ include $(topsrcdir)/config/rules.mk
 		test_bug618017.html \
 		test_bug636097.html \
 		test_bug661980.html \
 		test_bug650273.html \
 		file_bug650273.html \
 		file_bug658560.html \
 		$(NULL)
 
+_CHROME_FILES	= \
+		test_bug361111.xul \
+		$(NULL)
+
 ifneq ($(OS_TARGET),Android)
 ifndef MOZ_PLATFORM_MAEMO
 _TEST_FILES +=	test_bug657267.html \
 		bug657267.jar
 endif
 endif
 
 
 		#test_bug484107.html \
 
 libs:: $(_TEST_FILES)
 	$(INSTALL) $^ $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir)
+
+libs:: $(_CHROME_FILES)
+	$(INSTALL) $^ $(DEPTH)/_tests/testing/mochitest/chrome/$(relativesrcdir)
+
--- a/js/src/xpconnect/tests/mochitest/test_bug361111.xul
+++ b/js/src/xpconnect/tests/mochitest/test_bug361111.xul
@@ -1,18 +1,18 @@
 <?xml version="1.0"?>
 <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
-<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
+<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
 <!--
 https://bugzilla.mozilla.org/show_bug.cgi?id=361111
 -->
 <window title="Mozilla Bug 361111"
   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-  <script type="application/javascript" src="/MochiKit/packed.js" />
-  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"/>
+  <script type="application/javascript" src="chrome://mochikit/content/MochiKit/packed.js" />
+  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
 
   <!-- test results are displayed in the html:body -->
   <body xmlns="http://www.w3.org/1999/xhtml">
   <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=361111"
      target="_blank">Mozilla Bug 361111</a>
   </body>
 
   <!-- test code goes here -->
--- a/layout/generic/nsHTMLCanvasFrame.cpp
+++ b/layout/generic/nsHTMLCanvasFrame.cpp
@@ -101,16 +101,19 @@ public:
                                              const ContainerParameters& aContainerParameters)
   {
     return static_cast<nsHTMLCanvasFrame*>(mFrame)->
       BuildLayer(aBuilder, aManager, this);
   }
   virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder,
                                    LayerManager* aManager)
   {
+    if (CanvasElementFromContent(mFrame->GetContent())->ShouldForceInactiveLayer(aManager))
+      return LAYER_INACTIVE;
+
     // If compositing is cheap, just do that
     if (aManager->IsCompositingCheap())
       return mozilla::LAYER_ACTIVE;
 
     return mFrame->AreLayersMarkedActive() ? LAYER_ACTIVE : LAYER_INACTIVE;
   }
 };
 
--- a/layout/reftests/bugs/reftest.list
+++ b/layout/reftests/bugs/reftest.list
@@ -1540,17 +1540,17 @@ needs-focus == 568441.html 568441-ref.ht
 == 574898-1.html 574898-ref.html
 # 574907 is a windows-only issue, result on other platforms depends on details of font support
 random-if(!winWidget) == 574907-1.html 574907-1-ref.html
 random-if(!winWidget) == 574907-2.html 574907-2-ref.html
 # 574907-3 only worked under directwrite, and even there it now depends on the rendering mode; marking as random for now
 random-if(!winWidget) fails-if(winWidget&&!d2d) random-if(winWidget&&d2d) != 574907-3.html 574907-3-notref.html
 == 577838-1.html 577838-1-ref.html
 == 577838-2.html 577838-2-ref.html
-fails-if(Android) random-if(layersGPUAccelerated) fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) fails-if(/Mac\x20OS\x20X\x2010\.5/.test(http.oscpu)) == 579323-1.html 579323-1-ref.html # bug 623450 for WinXP and bug 627560 for OSX 10.5
+fails-if(Android) random-if(layersGPUAccelerated) == 579323-1.html 579323-1-ref.html
 == 579349-1.html 579349-1-ref.html
 == 579655-1.html 579655-1-ref.html
 fails-if(Android) == 579808-1.html 579808-1-ref.html
 fails-if(Android) random-if(layersGPUAccelerated) fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu))  == 579985-1.html 579985-1-ref.html # bug 623452 for WinXP; this bug was only for a regression in BasicLayers anyway
 == 580160-1.html 580160-1-ref.html
 fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) HTTP(..) == 580863-1.html 580863-1-ref.html # bug 623454
 fails-if(Android) random-if(layersGPUAccelerated) fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu))  == 581317-1.html 581317-1-ref.html # bug 623456 for WinXP
 == 581579-1.html 581579-1-ref.html
@@ -1617,17 +1617,17 @@ fails-if(Android) HTTP(..) == 619511-1.h
 random-if(winWidget) == 621918-1.svg 621918-1-ref.svg # 1-pixel diacritic positioning discrepancy in rotated text (may depend on platform fonts)
 random-if(winWidget) HTTP(..) == 621918-2.svg 621918-2-ref.svg # same 1px issue as above, and HTTP(..) for filters.svg, used to mask antialiasing issues where glyphs touch
 == 622585-1.html 622585-1-ref.html
 fails-if(Android) == 625409-1.html 625409-1-ref.html
 == 627393-1.html about:blank
 == 630835-1.html about:blank
 == 631352-1.html 631352-1-ref.html
 fails-if(Android) == 632423-1.html 632423-1-ref.html
-skip-if(Android) fails-if(winWidget) == 632781-verybig.html 632781-ref.html # large canvas elements are not drawn on Windows, see bug 633936
+skip-if(Android) == 632781-verybig.html 632781-ref.html
 == 632781-normalsize.html 632781-ref.html
 == 633344-1.html 633344-1-ref.html
 fails-if(Android) == 634232-1.html 634232-1-ref.html
 fails-if(Android) == 635302-1.html 635302-1-ref.html
 == 635373-1.html 635373-1-ref.html
 == 635373-2.html 635373-2-ref.html
 fails-if(http.platform=="X11"&&!layersGPUAccelerated) == 635373-3.html 635373-3-ref.html
 HTTP(..) == 635639-1.html 635639-1-ref.html
--- a/layout/reftests/canvas/reftest.list
+++ b/layout/reftests/canvas/reftest.list
@@ -1,9 +1,10 @@
 == default-size.html default-size-ref.html
+== size-1.html size-1-ref.html
 
 == image-rendering-test.html image-rendering-ref.html
 == image-shadow.html image-shadow-ref.html
 
 asserts-if(cocoaWidget,0-2) == size-change-1.html size-change-1-ref.html
 
 != text-ltr-left.html text-blank.html
 != text-ltr-right.html text-blank.html
new file mode 100644
--- /dev/null
+++ b/layout/reftests/canvas/size-1-ref.html
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML>
+<html>
+<body>
+<div style="background:lime; width:100px; height:30000px;"></div>
+<script>
+window.scrollTo(0, 100000);
+</script>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/layout/reftests/canvas/size-1.html
@@ -0,0 +1,12 @@
+<!DOCTYPE HTML>
+<html>
+<body>
+<canvas style="display:block" id="c" width="100" height="30000"></canvas>
+<script>
+var ctx = document.getElementById("c").getContext("2d");
+ctx.fillStyle = "lime";
+ctx.fillRect(0, 0, 100, 30000);
+window.scrollTo(0, 100000);
+</script>
+</body>
+</html>
--- a/layout/svg/base/src/nsSVGGeometryFrame.cpp
+++ b/layout/svg/base/src/nsSVGGeometryFrame.cpp
@@ -333,65 +333,65 @@ nsSVGGeometryFrame::SetupCairoStroke(gfx
   // See http://www.w3.org/TR/SVG11/coords.html#ObjectBoundingBox
   SetupFallbackOrPaintColor(aContext, GetStyleContext(),
                             &nsStyleSVG::mStroke, opacity);
 
   return PR_TRUE;
 }
 
 PRUint16
-nsSVGGeometryFrame::GetHittestMask()
+nsSVGGeometryFrame::GetHitTestFlags()
 {
-  PRUint16 mask = 0;
+  PRUint16 flags = 0;
 
   switch(GetStyleVisibility()->mPointerEvents) {
   case NS_STYLE_POINTER_EVENTS_NONE:
     break;
   case NS_STYLE_POINTER_EVENTS_AUTO:
   case NS_STYLE_POINTER_EVENTS_VISIBLEPAINTED:
     if (GetStyleVisibility()->IsVisible()) {
       if (GetStyleSVG()->mFill.mType != eStyleSVGPaintType_None)
-        mask |= HITTEST_MASK_FILL;
+        flags |= SVG_HIT_TEST_FILL;
       if (GetStyleSVG()->mStroke.mType != eStyleSVGPaintType_None)
-        mask |= HITTEST_MASK_STROKE;
+        flags |= SVG_HIT_TEST_STROKE;
       if (GetStyleSVG()->mStrokeOpacity > 0)
-        mask |= HITTEST_MASK_CHECK_MRECT;
+        flags |= SVG_HIT_TEST_CHECK_MRECT;
     }
     break;
   case NS_STYLE_POINTER_EVENTS_VISIBLEFILL:
     if (GetStyleVisibility()->IsVisible()) {
-      mask |= HITTEST_MASK_FILL;
+      flags |= SVG_HIT_TEST_FILL;
     }
     break;
   case NS_STYLE_POINTER_EVENTS_VISIBLESTROKE:
     if (GetStyleVisibility()->IsVisible()) {
-      mask |= HITTEST_MASK_STROKE;
+      flags |= SVG_HIT_TEST_STROKE;
     }
     break;
   case NS_STYLE_POINTER_EVENTS_VISIBLE:
     if (GetStyleVisibility()->IsVisible()) {
-      mask |= HITTEST_MASK_FILL | HITTEST_MASK_STROKE;
+      flags |= SVG_HIT_TEST_FILL | SVG_HIT_TEST_STROKE;
     }
     break;
   case NS_STYLE_POINTER_EVENTS_PAINTED:
     if (GetStyleSVG()->mFill.mType != eStyleSVGPaintType_None)
-      mask |= HITTEST_MASK_FILL;
+      flags |= SVG_HIT_TEST_FILL;
     if (GetStyleSVG()->mStroke.mType != eStyleSVGPaintType_None)
-      mask |= HITTEST_MASK_STROKE;
+      flags |= SVG_HIT_TEST_STROKE;
     if (GetStyleSVG()->mStrokeOpacity)
-      mask |= HITTEST_MASK_CHECK_MRECT;
+      flags |= SVG_HIT_TEST_CHECK_MRECT;
     break;
   case NS_STYLE_POINTER_EVENTS_FILL:
-    mask |= HITTEST_MASK_FILL;
+    flags |= SVG_HIT_TEST_FILL;
     break;
   case NS_STYLE_POINTER_EVENTS_STROKE:
-    mask |= HITTEST_MASK_STROKE;
+    flags |= SVG_HIT_TEST_STROKE;
     break;
   case NS_STYLE_POINTER_EVENTS_ALL:
-    mask |= HITTEST_MASK_FILL | HITTEST_MASK_STROKE;
+    flags |= SVG_HIT_TEST_FILL | SVG_HIT_TEST_STROKE;
     break;
   default:
     NS_ERROR("not reached");
     break;
   }
 
-  return mask;
+  return flags;
 }
--- a/layout/svg/base/src/nsSVGGeometryFrame.h
+++ b/layout/svg/base/src/nsSVGGeometryFrame.h
@@ -41,19 +41,19 @@
 #include "nsFrame.h"
 #include "gfxMatrix.h"
 
 class nsSVGPaintServerFrame;
 class gfxContext;
 
 typedef nsFrame nsSVGGeometryFrameBase;
 
-#define HITTEST_MASK_FILL        0x01
-#define HITTEST_MASK_STROKE      0x02
-#define HITTEST_MASK_CHECK_MRECT 0x04
+#define SVG_HIT_TEST_FILL        0x01
+#define SVG_HIT_TEST_STROKE      0x02
+#define SVG_HIT_TEST_CHECK_MRECT 0x04
 
 /* nsSVGGeometryFrame is a base class for SVG objects that directly
  * have geometry (circle, ellipse, line, polyline, polygon, path, and
  * glyph frames).  It knows how to convert the style information into
  * cairo context information and stores the fill/stroke paint
  * servers. */
 
 class nsSVGGeometryFrame : public nsSVGGeometryFrameBase
@@ -101,17 +101,24 @@ public:
    * Set up a cairo context for stroking a path
    * @return PR_FALSE to skip rendering
    */
   PRBool SetupCairoStroke(gfxContext *aContext);
 
 protected:
   nsSVGPaintServerFrame *GetPaintServer(const nsStyleSVGPaint *aPaint,
                                         const FramePropertyDescriptor *aProperty);
-  virtual PRUint16 GetHittestMask();
+
+  /**
+   * This function returns a set of bit flags indicating which parts of the
+   * element (fill, stroke, bounds) should intercept pointer events. It takes
+   * into account the type of element and the value of the 'pointer-events'
+   * property on the element.
+   */
+  virtual PRUint16 GetHitTestFlags();
 
 private:
   nsresult GetStrokeDashArray(double **arr, PRUint32 *count);
   float GetStrokeDashoffset();
 
   /**
    * Returns the given 'fill-opacity' or 'stroke-opacity' value multiplied by
    * the value of the 'opacity' property if it's possible to avoid the expense
--- a/layout/svg/base/src/nsSVGGlyphFrame.cpp
+++ b/layout/svg/base/src/nsSVGGlyphFrame.cpp
@@ -410,50 +410,50 @@ nsSVGGlyphFrame::PaintSVG(nsSVGRenderSta
   gfx->Restore();
 
   return NS_OK;
 }
 
 NS_IMETHODIMP_(nsIFrame*)
 nsSVGGlyphFrame::GetFrameForPoint(const nsPoint &aPoint)
 {
-  PRUint16 mask = GetHittestMask();
-  if (!mask) {
+  PRUint16 hitTestFlags = GetHitTestFlags();
+  if (!hitTestFlags) {
     return nsnull;
   }
 
   nsRefPtr<gfxContext> context = MakeTmpCtx();
   SetupGlobalTransform(context);
   CharacterIterator iter(this, PR_TRUE);
   iter.SetInitialMatrix(context);
 
   // The SVG 1.1 spec says that text is hit tested against the character cells
   // of the text, not the fill and stroke. See the section starting "For text
   // elements..." here:
   //
   //   http://www.w3.org/TR/SVG11/interact.html#PointerEventsProperty
   //
-  // Currently we just test the character cells if GetHittestMask says we're
+  // Currently we just test the character cells if GetHitTestFlags says we're
   // supposed to be testing either the fill OR the stroke:
 
   PRInt32 i;
   while ((i = iter.NextCluster()) >= 0) {
     gfxTextRun::Metrics metrics =
     mTextRun->MeasureText(i, iter.ClusterLength(),
                           gfxFont::LOOSE_INK_EXTENTS, nsnull, nsnull);
     iter.SetupForMetrics(context);
     context->Rectangle(metrics.mBoundingBox);
   }
 
   gfxPoint userSpacePoint =
     context->DeviceToUser(gfxPoint(PresContext()->AppUnitsToGfxUnits(aPoint.x),
                                    PresContext()->AppUnitsToGfxUnits(aPoint.y)));
 
   PRBool isHit = PR_FALSE;
-  if (mask & HITTEST_MASK_FILL || mask & HITTEST_MASK_STROKE) {
+  if (hitTestFlags & SVG_HIT_TEST_FILL || hitTestFlags & SVG_HIT_TEST_STROKE) {
     isHit = context->PointInFill(userSpacePoint);
   }
 
   // If isHit is false, we may also want to fill and stroke the text to check
   // whether the pointer is over an area of fill or stroke that lies outside
   // the character cells. (With a thick stroke, or with fonts like Zapfino, such
   // areas may be very significant.) This is what Opera appears to do, but
   // currently we do not.
--- a/layout/svg/base/src/nsSVGImageFrame.cpp
+++ b/layout/svg/base/src/nsSVGImageFrame.cpp
@@ -86,17 +86,17 @@ public:
   NS_DECL_FRAMEARENA_HELPERS
 
   // nsISVGChildFrame interface:
   NS_IMETHOD PaintSVG(nsSVGRenderState *aContext, const nsIntRect *aDirtyRect);
   NS_IMETHOD_(nsIFrame*) GetFrameForPoint(const nsPoint &aPoint);
 
   // nsSVGPathGeometryFrame methods:
   NS_IMETHOD UpdateCoveredRegion();
-  virtual PRUint16 GetHittestMask();
+  virtual PRUint16 GetHitTestFlags();
 
   // nsIFrame interface:
   NS_IMETHOD  AttributeChanged(PRInt32         aNameSpaceID,
                                nsIAtom*        aAttribute,
                                PRInt32         aModType);
   NS_IMETHOD Init(nsIContent*      aContent,
                   nsIFrame*        aParent,
                   nsIFrame*        aPrevInFlow);
@@ -455,52 +455,52 @@ nsSVGImageFrame::UpdateCoveredRegion()
   if (!extent.IsEmpty()) {
     mRect = nsSVGUtils::ToAppPixelRect(PresContext(), extent);
   }
 
   return NS_OK;
 }
 
 PRUint16
-nsSVGImageFrame::GetHittestMask()
+nsSVGImageFrame::GetHitTestFlags()
 {
-  PRUint16 mask = 0;
+  PRUint16 flags = 0;
 
   switch(GetStyleVisibility()->mPointerEvents) {
     case NS_STYLE_POINTER_EVENTS_NONE:
       break;
     case NS_STYLE_POINTER_EVENTS_VISIBLEPAINTED:
     case NS_STYLE_POINTER_EVENTS_AUTO:
       if (GetStyleVisibility()->IsVisible()) {
         /* XXX: should check pixel transparency */
-        mask |= HITTEST_MASK_FILL;
+        flags |= SVG_HIT_TEST_FILL;
       }
       break;
     case NS_STYLE_POINTER_EVENTS_VISIBLEFILL:
     case NS_STYLE_POINTER_EVENTS_VISIBLESTROKE:
     case NS_STYLE_POINTER_EVENTS_VISIBLE:
       if (GetStyleVisibility()->IsVisible()) {
-        mask |= HITTEST_MASK_FILL;
+        flags |= SVG_HIT_TEST_FILL;
       }
       break;
     case NS_STYLE_POINTER_EVENTS_PAINTED:
       /* XXX: should check pixel transparency */
-      mask |= HITTEST_MASK_FILL;
+      flags |= SVG_HIT_TEST_FILL;
       break;
     case NS_STYLE_POINTER_EVENTS_FILL:
     case NS_STYLE_POINTER_EVENTS_STROKE:
     case NS_STYLE_POINTER_EVENTS_ALL:
-      mask |= HITTEST_MASK_FILL;
+      flags |= SVG_HIT_TEST_FILL;
       break;
     default:
       NS_ERROR("not reached");
       break;
   }
 
-  return mask;
+  return flags;
 }
 
 //----------------------------------------------------------------------
 // nsSVGImageListener implementation
 
 NS_IMPL_ISUPPORTS2(nsSVGImageListener,
                    imgIDecoderObserver,
                    imgIContainerObserver)
--- a/layout/svg/base/src/nsSVGPathGeometryFrame.cpp
+++ b/layout/svg/base/src/nsSVGPathGeometryFrame.cpp
@@ -148,24 +148,24 @@ nsSVGPathGeometryFrame::PaintSVG(nsSVGRe
   }
 
   return NS_OK;
 }
 
 NS_IMETHODIMP_(nsIFrame*)
 nsSVGPathGeometryFrame::GetFrameForPoint(const nsPoint &aPoint)
 {
-  PRUint16 fillRule, mask;
+  PRUint16 fillRule, hitTestFlags;
   if (GetStateBits() & NS_STATE_SVG_CLIPPATH_CHILD) {
-    mask = HITTEST_MASK_FILL;
+    hitTestFlags = SVG_HIT_TEST_FILL;
     fillRule = GetClipRule();
   } else {
-    mask = GetHittestMask();
-    if (!mask || ((mask & HITTEST_MASK_CHECK_MRECT) &&
-                  !mRect.Contains(aPoint)))
+    hitTestFlags = GetHitTestFlags();
+    if (!hitTestFlags || ((hitTestFlags & SVG_HIT_TEST_CHECK_MRECT) &&
+                          !mRect.Contains(aPoint)))
       return nsnull;
     fillRule = GetStyleSVG()->mFillRule;
   }
 
   PRBool isHit = PR_FALSE;
 
   nsRefPtr<gfxContext> context =
     new gfxContext(gfxPlatform::GetPlatform()->ScreenReferenceSurface());
@@ -175,19 +175,19 @@ nsSVGPathGeometryFrame::GetFrameForPoint
     context->DeviceToUser(gfxPoint(PresContext()->AppUnitsToGfxUnits(aPoint.x),
                                    PresContext()->AppUnitsToGfxUnits(aPoint.y)));
 
   if (fillRule == NS_STYLE_FILL_RULE_EVENODD)
     context->SetFillRule(gfxContext::FILL_RULE_EVEN_ODD);
   else
     context->SetFillRule(gfxContext::FILL_RULE_WINDING);
 
-  if (mask & HITTEST_MASK_FILL)
+  if (hitTestFlags & SVG_HIT_TEST_FILL)
     isHit = context->PointInFill(userSpacePoint);
-  if (!isHit && (mask & HITTEST_MASK_STROKE)) {
+  if (!isHit && (hitTestFlags & SVG_HIT_TEST_STROKE)) {
     SetupCairoStrokeHitGeometry(context);
     isHit = context->PointInStroke(userSpacePoint);
   }
 
   if (isHit && nsSVGUtils::HitTestClip(this, aPoint))
     return this;
 
   return nsnull;
--- a/testing/mochitest/redirect.js
+++ b/testing/mochitest/redirect.js
@@ -35,20 +35,11 @@
  * and other provisions required by the GPL or the LGPL. If you do not delete
  * the provisions above, a recipient may use your version of this file under
  * the terms of any one of the MPL, the GPL or the LGPL.
  *
  * ***** END LICENSE BLOCK ***** */
 
 function redirect(aURL)
 {
-  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
-  
-  const Cc = Components.classes;
-  const Ci = Components.interfaces;
-
-  // Can't just set window.location because of security restrictions
-  // that don't care about our UniversalXPConnectness
-  var webNav = window.QueryInterface(Ci.nsIInterfaceRequestor)
-                     .getInterface(Ci.nsIWebNavigation);
-  webNav.loadURI(aURL + location.search,
+  SpecialPowers.loadURI(window, aURL + location.search,
                  null, null, null, null);
 }
--- a/testing/mochitest/runtests.py
+++ b/testing/mochitest/runtests.py
@@ -495,22 +495,17 @@ class Mochitest(object):
     self.automation.log.info("INFO | runtests.py | Done installing extension.")
 
   def buildProfile(self, options):
     """ create the profile and add optional chrome bits and files if requested """
     self.automation.initializeProfile(options.profilePath, options.extraPrefs, useServerLocations = True)
     manifest = self.addChromeToProfile(options)
     self.copyExtraFilesToProfile(options)
 
-    # We only need special powers in non-chrome harnesses
-    if (not options.browserChrome and
-        not options.chrome and