<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>90329</bug_id>
          
          <creation_ts>2012-06-29 18:28:57 -0700</creation_ts>
          <short_desc>[chromium] Remove WebTransformationMatrix::mapPoint overrides</short_desc>
          <delta_ts>2012-07-30 16:56:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>shawnsingh</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>660915</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 18:28:57 -0700</bug_when>
    <thetext>[chromium] Remove WebTransformationMatrix::mapPoint overrides</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660916</commentid>
    <comment_count>1</comment_count>
      <attachid>150287</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 18:30:24 -0700</bug_when>
    <thetext>Created attachment 150287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660919</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 18:32:15 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660920</commentid>
    <comment_count>3</comment_count>
      <attachid>150287</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 18:33:04 -0700</bug_when>
    <thetext>Comment on attachment 150287
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=150287&amp;action=review

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:821
&gt; +        bottomRight = CCMathUtil::projectPoint(deviceTransform, bottomRight, clipped);

deviceTransform has been to2dTransform()&apos;d, so projection is unnecessary here (but still correct, I think)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660922</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 18:38:56 -0700</bug_when>
    <thetext>Actually, I think I just don&apos;t understand the distinction in terminology between project + map in this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660923</commentid>
    <comment_count>5</comment_count>
      <attachid>150287</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-06-29 18:39:36 -0700</bug_when>
    <thetext>Comment on attachment 150287
Patch

I think this patch is OK, but please treat any math code I write with extreme skepticism.  I feel that I&apos;m probably using the wrong name for something somewhere, but I think the clipping logic here is what we want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661046</commentid>
    <comment_count>6</comment_count>
      <attachid>150287</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-30 08:38:15 -0700</bug_when>
    <thetext>Comment on attachment 150287
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=150287&amp;action=review

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:821
&gt;&gt; +        bottomRight = CCMathUtil::projectPoint(deviceTransform, bottomRight, clipped);
&gt; 
&gt; deviceTransform has been to2dTransform()&apos;d, so projection is unnecessary here (but still correct, I think)

deviceTransform is not an inverse transform (it&apos;s the drawTransform + window/projection), so I think you want mapPoint. Then again you wrote the method so maybe you know something I don&apos;t :) /me defers to shawn.

The rule as I understand it is, apply a transform with map. Apply its inverse with project. Project takes into account you lose z-offsets during map, and applies inverse transform correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661566</commentid>
    <comment_count>7</comment_count>
      <attachid>150287</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-07-02 09:52:41 -0700</bug_when>
    <thetext>Comment on attachment 150287
Patch


Unofficially looks good to me, except for the same point that Dana brought up. =)

View in context: https://bugs.webkit.org/attachment.cgi?id=150287&amp;action=review

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:821
&gt;&gt;&gt; +        bottomRight = CCMathUtil::projectPoint(deviceTransform, bottomRight, clipped);
&gt;&gt; 
&gt;&gt; deviceTransform has been to2dTransform()&apos;d, so projection is unnecessary here (but still correct, I think)
&gt; 
&gt; deviceTransform is not an inverse transform (it&apos;s the drawTransform + window/projection), so I think you want mapPoint. Then again you wrote the method so maybe you know something I don&apos;t :) /me defers to shawn.
&gt; 
&gt; The rule as I understand it is, apply a transform with map. Apply its inverse with project. Project takes into account you lose z-offsets during map, and applies inverse transform correctly.

I think projectPoint works correctly, but for incorrect reasons (the reason being that we did to2dTransform so project and map are likely to be the same).   For correct concepts, though, we should probably keep mapPoint here, like Dana said...

Dana&apos;s rule seems correct to me, except that it might be better to say, &quot;use map() when transforming up the hierarchy, from local space to screen space.  Use project() when transforming down the hierarchy, from screen space to local space&quot; -- that wording would be correct regardless of which transform/inverse we have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661642</commentid>
    <comment_count>8</comment_count>
      <attachid>150456</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-07-02 11:38:54 -0700</bug_when>
    <thetext>Created attachment 150456
map instead of project in drawTileQuad</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661653</commentid>
    <comment_count>9</comment_count>
      <attachid>150456</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-02 11:56:13 -0700</bug_when>
    <thetext>Comment on attachment 150456
map instead of project in drawTileQuad

Is there a reason to add a 3D version of mapPoint? It looks like all the mapPoint use z=0, so you can just use the existing 2D version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682451</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-07-30 15:18:27 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 150456 [details])
&gt; Is there a reason to add a 3D version of mapPoint? It looks like all the mapPoint use z=0, so you can just use the existing 2D version.

The input Z is always zero in CCLayerSorter, but the transform might change the Z value so I do need the 3d version.  At least, if I use the 2d version CCLayerSorterTest tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682458</commentid>
    <comment_count>11</comment_count>
      <attachid>150456</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-30 15:22:39 -0700</bug_when>
    <thetext>Comment on attachment 150456
map instead of project in drawTileQuad

R=me.  Oh, whoops.  You&apos;re totally right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682459</commentid>
    <comment_count>12</comment_count>
      <attachid>155382</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-07-30 15:23:40 -0700</bug_when>
    <thetext>Created attachment 155382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682462</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-07-30 15:26:06 -0700</bug_when>
    <thetext>Updated to ToT with one small change - instead of ASSERT(!clipping) in CCLayerSorter.cpp I just have a FIXME.  Otherwise, the ASSERT fails on CCLayerSorterTest.LayersUnderPathologicalPerspectiveTransform.  I&apos;m not entirely sure why this is different now - perhaps due to http://trac.webkit.org/changeset/123628 (which touched CCLayerSorter.cpp)?  In any case, the behavior is the same as before - we don&apos;t do anything in particular if the map clips.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682466</commentid>
    <comment_count>14</comment_count>
      <attachid>155382</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-07-30 15:31:08 -0700</bug_when>
    <thetext>Comment on attachment 155382
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682475</commentid>
    <comment_count>15</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-07-30 15:38:07 -0700</bug_when>
    <thetext>Committed r124105: &lt;http://trac.webkit.org/changeset/124105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682537</commentid>
    <comment_count>16</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-07-30 16:56:14 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Updated to ToT with one small change - instead of ASSERT(!clipping) in CCLayerSorter.cpp I just have a FIXME.  Otherwise, the ASSERT fails on CCLayerSorterTest.LayersUnderPathologicalPerspectiveTransform.  I&apos;m not entirely sure why this is different now - perhaps due to http://trac.webkit.org/changeset/123628 (which touched CCLayerSorter.cpp)?  In any case, the behavior is the same as before - we don&apos;t do anything in particular if the map clips.

LayerSorting has this known problem - we have to revise the sorting algorithm overall so that it doesn&apos;t map a point like that, because if it becomes clipped, we can&apos;t us it to determine the plane of the layer we&apos;re trying to sort.

So yeah, I don&apos;t think removing that ASSERT is a big deal.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150287</attachid>
            <date>2012-06-29 18:30:24 -0700</date>
            <delta_ts>2012-07-02 11:38:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90329-20120629183023.patch</filename>
            <type>text/plain</type>
            <size>11608</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwYjFhNjQ3MTc0ZjZm
YzY5YzJlY2JiYWU4YjVjMzA1YTkzNTgwYjQ3Li5kMmUwYzJmZDQyZDJkY2M3Yjg0MDU2MzgzNWQz
M2YzN2I4N2YzOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gUmVtb3ZlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludCBvdmVycmlkZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMzI5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNsaXBw
aW5nLXVuYXdhcmUgbWFwUG9pbnQgZnVuY3Rpb25zIGZyb20gdGhlIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGludGVyZmFjZS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oOgorICAgICAgICAoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgpOgorCiAy
MDEyLTA2LTI5ICBUb255IFBheW5lICA8dHBheW5lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZW1vdmUgdHlwZSBmcm9tIHNjcmVlbkNvbG9yUHJvZmlsZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNTkz
MjIzMzgwOGIxYmM5YzRkMTJkMGUyY2Q2ZjMwODZmNjhmNzRjLi4xYjAxOWMwMDc5YWQzOThmNjNl
ZWYyOGI2MTE5Yzg5MWNlNTBkM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTIt
MDYtMjkgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBb
Y2hyb21pdW1dIFJlbW92ZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQgb3ZlcnJp
ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBt
b3JlIGZ1bmN0aW9uYWxpdHkgZm9yIG1hcHBpbmcgcG9pbnRzIHRvIENDTWF0aFV0aWwgYW5kIHVz
ZSBpdCBpbiBDQ0xheWVyU29ydGVyIC8gZHJhd1RpbGVRdWFkLiBUaGVzZQorICAgICAgICBtYXBw
aW5ncyBzaG91bGQgbmV2ZXIgY2xpcC4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlOjpMYXllclNoYXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1hcEhvbW9nZW5lb3VzUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NNYXRo
VXRpbDo6bWFwUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5oOgorICAgICAgICAoV2ViQ29yZTo6SG9t
b2dlbmVvdXNDb29yZGluYXRlOjpjYXJ0ZXNpYW5Qb2ludDNkKToKKyAgICAgICAgKEhvbW9nZW5l
b3VzQ29vcmRpbmF0ZSk6CisgICAgICAgIChDQ01hdGhVdGlsKToKKworMjAxMi0wNi0yOSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0g
VXNlIENDVGhyZWFkOjpUYXNrIGluIGNvbXBvc2l0b3IncyBSYXRlTGltaXRlciBpbnN0ZWFkIG9m
IFRpbWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MDMwMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRy
YW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlRyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggMGZmZTBjNDA1MmE0NjhlMjNmOGFhMDA3YjMy
NjYwNDUzYjE5MDZjMi4uOWRlOWUyYzRjMTdjYzQ5ZDBlNjQ2YzEwNzcwOGI1ZGM4MTRlNjgwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXguaApAQCAtMTM3LDEzICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgLy8g
Q29udmVyc2lvbnMgYmV0d2VlbiBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGFuZCBX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeAogICAgIGV4cGxpY2l0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggdG9XZWJDb3JlVHJhbnNmb3JtKCkgY29uc3Q7Ci0K
LSAgICAvLyBGSVhNRTogdGhlc2UgbWFwIGZ1bmN0aW9ucyBzaG91bGQgbm90IGV4aXN0LCBzaG91
bGQgYmUgdXNpbmcgQ0NNYXRoVXRpbAotICAgIC8vIGluc3RlYWQuIEV2ZW50dWFsbHkgQ0NNYXRo
VXRpbCBmdW5jdGlvbnMgY291bGQgYmUgbWVyZ2VkIGhlcmUsIGJ1dCBpdHMKLSAgICAvLyBub3Qg
eWV0IHRoZSByaWdodCB0aW1lIGZvciB0aGF0LgotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCBt
YXBQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKSBjb25zdDsKLSAgICBXZWJDb3Jl
OjpGbG9hdFBvaW50IG1hcFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsK
LSAgICBXZWJDb3JlOjpJbnRQb2ludCBtYXBQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
IGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHAKaW5kZXggY2IyNTlmMDUxZWY4ODU3OGZjNGNkNzZmMWI2YWFiN2U3NTE0ZTZj
Zi4uNmQ5OTQ0MGQ1MGJjMjgxMmY2OGExYTk3NWM5ZWRkNzVjNzdkOTk0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTQyMiwxOSArNDIyLDQgQEAgVHJhbnNm
b3JtYXRpb25NYXRyaXggV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvV2ViQ29yZVRyYW5zZm9y
bSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZTsKIH0KIAotRmxvYXRQb2ludDNEIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIHApIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS5tYXBQb2ludChwKTsKLX0KLQotRmxvYXRQb2ludCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLm1hcFBvaW50KHApOwotfQotCi1JbnRQb2ludCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQoY29uc3QgSW50UG9pbnQmIHApIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS5tYXBQb2ludChwKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA3Yzgx
ODFkMzAyNTBkNjRmOTVkODRiYzFmOTQyYTljYTZhODczOTg3Li41MzQ5MGQxNGJjNjMzNDdiNTQw
ZDZjZjQwYjdkN2MzNmI4NGQyMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTgxOCwxMCArODE4LDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIEZsb2F0UG9p
bnQgdG9wUmlnaHQodGlsZVJlY3QubWF4WCgpLCB0aWxlUmVjdC55KCkpOwogCiAgICAgICAgIC8v
IE1hcCBwb2ludHMgdG8gZGV2aWNlIHNwYWNlLgotICAgICAgICBib3R0b21SaWdodCA9IGRldmlj
ZVRyYW5zZm9ybS5tYXBQb2ludChib3R0b21SaWdodCk7Ci0gICAgICAgIGJvdHRvbUxlZnQgPSBk
ZXZpY2VUcmFuc2Zvcm0ubWFwUG9pbnQoYm90dG9tTGVmdCk7Ci0gICAgICAgIHRvcExlZnQgPSBk
ZXZpY2VUcmFuc2Zvcm0ubWFwUG9pbnQodG9wTGVmdCk7Ci0gICAgICAgIHRvcFJpZ2h0ID0gZGV2
aWNlVHJhbnNmb3JtLm1hcFBvaW50KHRvcFJpZ2h0KTsKKyAgICAgICAgYm90dG9tUmlnaHQgPSBD
Q01hdGhVdGlsOjpwcm9qZWN0UG9pbnQoZGV2aWNlVHJhbnNmb3JtLCBib3R0b21SaWdodCwgY2xp
cHBlZCk7CisgICAgICAgIEFTU0VSVCghY2xpcHBlZCk7CisgICAgICAgIGJvdHRvbUxlZnQgPSBD
Q01hdGhVdGlsOjpwcm9qZWN0UG9pbnQoZGV2aWNlVHJhbnNmb3JtLCBib3R0b21MZWZ0LCBjbGlw
cGVkKTsKKyAgICAgICAgQVNTRVJUKCFjbGlwcGVkKTsKKyAgICAgICAgdG9wTGVmdCA9IENDTWF0
aFV0aWw6OnByb2plY3RQb2ludChkZXZpY2VUcmFuc2Zvcm0sIHRvcExlZnQsIGNsaXBwZWQpOwor
ICAgICAgICBBU1NFUlQoIWNsaXBwZWQpOworICAgICAgICB0b3BSaWdodCA9IENDTWF0aFV0aWw6
OnByb2plY3RQb2ludChkZXZpY2VUcmFuc2Zvcm0sIHRvcFJpZ2h0LCBjbGlwcGVkKTsKKyAgICAg
ICAgQVNTRVJUKCFjbGlwcGVkKTsKIAogICAgICAgICBDQ0xheWVyUXVhZDo6RWRnZSBib3R0b21F
ZGdlKGJvdHRvbVJpZ2h0LCBib3R0b21MZWZ0KTsKICAgICAgICAgQ0NMYXllclF1YWQ6OkVkZ2Ug
bGVmdEVkZ2UoYm90dG9tTGVmdCwgdG9wTGVmdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3Bw
CmluZGV4IGZkZjNjN2JiMjc1YzE2NzEzM2ZhMTA4ZDExYTMwZDFmODMyYWUwZjMuLjY3ODhlMWFi
ZDMyMTNkOTViZTg5ODBhMzI3YjE3NGFjMTkxZjZkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0
ZXIuY3BwCkBAIC0xODYsOSArMTg2LDEzIEBAIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGU6Okxh
eWVyU2hhcGUoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgY29uc3QgV2ViVHJhbnNmCiAgICAg
ICAgIHByb2plY3RlZFF1YWQuc2V0UDQoY2xpcHBlZFF1YWRbMl0pOyAvLyB0aGlzIHdpbGwgYmUg
YSBkZWdlbmVyYXRlIHF1YWQgdGhhdCBpcyBhY3R1YWxseSBhIHRyaWFuZ2xlLgogCiAgICAgLy8g
Q29tcHV0ZSB0aGUgbm9ybWFsIG9mIHRoZSBsYXllcidzIHBsYW5lLgotICAgIEZsb2F0UG9pbnQz
RCBjMSA9IGRyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludDNEKDAsIDAsIDApKTsKLSAg
ICBGbG9hdFBvaW50M0QgYzIgPSBkcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQzRCgw
LCAxLCAwKSk7Ci0gICAgRmxvYXRQb2ludDNEIGMzID0gZHJhd1RyYW5zZm9ybS5tYXBQb2ludChG
bG9hdFBvaW50M0QoMSwgMCwgMCkpOworICAgIGJvb2wgY2xpcHBlZCA9IGZhbHNlOworICAgIEZs
b2F0UG9pbnQzRCBjMSA9IENDTWF0aFV0aWw6Om1hcFBvaW50KGRyYXdUcmFuc2Zvcm0sIEZsb2F0
UG9pbnQzRCgwLCAwLCAwKSwgY2xpcHBlZCk7CisgICAgQVNTRVJUKCFjbGlwcGVkKTsKKyAgICBG
bG9hdFBvaW50M0QgYzIgPSBDQ01hdGhVdGlsOjptYXBQb2ludChkcmF3VHJhbnNmb3JtLCBGbG9h
dFBvaW50M0QoMCwgMSwgMCksIGNsaXBwZWQpOworICAgIEFTU0VSVCghY2xpcHBlZCk7CisgICAg
RmxvYXRQb2ludDNEIGMzID0gQ0NNYXRoVXRpbDo6bWFwUG9pbnQoZHJhd1RyYW5zZm9ybSwgRmxv
YXRQb2ludDNEKDEsIDAsIDApLCBjbGlwcGVkKTsKKyAgICBBU1NFUlQoIWNsaXBwZWQpOwogICAg
IEZsb2F0UG9pbnQzRCBjMTIgPSBjMiAtIGMxOwogICAgIEZsb2F0UG9pbnQzRCBjMTMgPSBjMyAt
IGMxOwogICAgIGxheWVyTm9ybWFsID0gYzEzLmNyb3NzKGMxMik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwu
Y3BwCmluZGV4IDAwN2U3NGQ0OWIzMmNjMGZhZWQwNmExMTJiMzgwZDFjOWYzZDNjZTAuLjNlMWE3
NWM0YTFhYjEyNDg5YmE5NWIxM2RiZTkyNjYxMmEzZmRjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwu
Y3BwCkBAIC01NywxNyArNTcsMTcgQEAgc3RhdGljIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSBwcm9q
ZWN0SG9tb2dlbmVvdXNQb2ludChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHIKICAgICByZXR1
cm4gSG9tb2dlbmVvdXNDb29yZGluYXRlKG91dFgsIG91dFksIG91dFosIG91dFcpOwogfQogCi1z
dGF0aWMgSG9tb2dlbmVvdXNDb29yZGluYXRlIG1hcEhvbW9nZW5lb3VzUG9pbnQoY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcCkKK3N0
YXRpYyBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgbWFwSG9tb2dlbmVvdXNQb2ludChjb25zdCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50M0QmIHApCiB7
CiAgICAgZG91YmxlIHggPSBwLngoKTsKICAgICBkb3VibGUgeSA9IHAueSgpOwotICAgIC8vIGlt
cGxpY2l0IGRlZmluaXRpb24gb2YgeiA9IDA7CisgICAgZG91YmxlIHogPSBwLnooKTsKICAgICAv
LyBpbXBsaWNpdCBkZWZpbml0aW9uIG9mIHcgPSAxOwogCi0gICAgZG91YmxlIG91dFggPSB4ICog
dHJhbnNmb3JtLm0xMSgpICsgeSAqIHRyYW5zZm9ybS5tMjEoKSArIHRyYW5zZm9ybS5tNDEoKTsK
LSAgICBkb3VibGUgb3V0WSA9IHggKiB0cmFuc2Zvcm0ubTEyKCkgKyB5ICogdHJhbnNmb3JtLm0y
MigpICsgdHJhbnNmb3JtLm00MigpOwotICAgIGRvdWJsZSBvdXRaID0geCAqIHRyYW5zZm9ybS5t
MTMoKSArIHkgKiB0cmFuc2Zvcm0ubTIzKCkgKyB0cmFuc2Zvcm0ubTQzKCk7Ci0gICAgZG91Ymxl
IG91dFcgPSB4ICogdHJhbnNmb3JtLm0xNCgpICsgeSAqIHRyYW5zZm9ybS5tMjQoKSArIHRyYW5z
Zm9ybS5tNDQoKTsKKyAgICBkb3VibGUgb3V0WCA9IHggKiB0cmFuc2Zvcm0ubTExKCkgKyB5ICog
dHJhbnNmb3JtLm0yMSgpICsgeiAqIHRyYW5zZm9ybS5tMzEoKSArIHRyYW5zZm9ybS5tNDEoKTsK
KyAgICBkb3VibGUgb3V0WSA9IHggKiB0cmFuc2Zvcm0ubTEyKCkgKyB5ICogdHJhbnNmb3JtLm0y
MigpICsgeiAqIHRyYW5zZm9ybS5tMzIoKSArIHRyYW5zZm9ybS5tNDIoKTsKKyAgICBkb3VibGUg
b3V0WiA9IHggKiB0cmFuc2Zvcm0ubTEzKCkgKyB5ICogdHJhbnNmb3JtLm0yMygpICsgeiAqIHRy
YW5zZm9ybS5tMzMoKSArIHRyYW5zZm9ybS5tNDMoKTsKKyAgICBkb3VibGUgb3V0VyA9IHggKiB0
cmFuc2Zvcm0ubTE0KCkgKyB5ICogdHJhbnNmb3JtLm0yNCgpICsgeiAqIHRyYW5zZm9ybS5tMzQo
KSArIHRyYW5zZm9ybS5tNDQoKTsKIAogICAgIHJldHVybiBIb21vZ2VuZW91c0Nvb3JkaW5hdGUo
b3V0WCwgb3V0WSwgb3V0Wiwgb3V0Vyk7CiB9CkBAIC0yNzQsNiArMjc0LDI5IEBAIEZsb2F0UXVh
ZCBDQ01hdGhVdGlsOjptYXBRdWFkKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGNvbnN0IEZsCiAgICAgcmV0dXJuIEZsb2F0UXVhZChoMS5jYXJ0ZXNpYW5Qb2ludDJk
KCksIGgyLmNhcnRlc2lhblBvaW50MmQoKSwgaDMuY2FydGVzaWFuUG9pbnQyZCgpLCBoNC5jYXJ0
ZXNpYW5Qb2ludDJkKCkpOwogfQogCitGbG9hdFBvaW50M0QgQ0NNYXRoVXRpbDo6bWFwUG9pbnQo
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dDNEJiBwLCBib29sJiBjbGlwcGVkKQoreworICAgIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSBoID0g
bWFwSG9tb2dlbmVvdXNQb2ludCh0cmFuc2Zvcm0sIHApOworCisgICAgaWYgKGgudyA+IDApIHsK
KyAgICAgICAgY2xpcHBlZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gaC5jYXJ0ZXNpYW5Qb2lu
dDNkKCk7CisgICAgfQorCisgICAgLy8gVGhlIGNhcnRlc2lhbiBjb29yZGluYXRlcyB3aWxsIGJl
IGludmFsaWQgYWZ0ZXIgZGl2aWRpbmcgYnkgdy4KKyAgICBjbGlwcGVkID0gdHJ1ZTsKKworICAg
IC8vIEF2b2lkIGRpdmlkaW5nIGJ5IHcgaWYgdyA9PSAwLgorICAgIGlmICghaC53KQorICAgICAg
ICByZXR1cm4gRmxvYXRQb2ludDNEKCk7CisKKyAgICAvLyBUaGlzIHJldHVybiB2YWx1ZSB3aWxs
IGJlIGludmFsaWQgYmVjYXVzZSBjbGlwcGVkID09IHRydWUsIGJ1dCAoMSkgdXNlcnMgb2YgdGhp
cworICAgIC8vIGNvZGUgc2hvdWxkIGJlIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgd2hlbiBj
bGlwcGVkID09IHRydWUgYW55d2F5LCBhbmQgKDIpIHRoaXMKKyAgICAvLyBiZWhhdmlvciBpcyBt
b3JlIGNvbnNpc3RlbnQgd2l0aCBleGlzdGluZyBiZWhhdmlvciBvZiBXZWJLaXQgdHJhbnNmb3Jt
cyBpZiB0aGUgdXNlcgorICAgIC8vIHJlYWxseSBkb2VzIG5vdCBpZ25vcmUgdGhlIHJldHVybiB2
YWx1ZS4KKyAgICByZXR1cm4gaC5jYXJ0ZXNpYW5Qb2ludDNkKCk7Cit9CisKIEZsb2F0UXVhZCBD
Q01hdGhVdGlsOjpwcm9qZWN0UXVhZChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBjb25zdCBGbG9hdFF1YWQmIHEsIGJvb2wmIGNsaXBwZWQpCiB7CiAgICAgRmxvYXRR
dWFkIHByb2plY3RlZFF1YWQ7CkBAIC0zMTQsNSArMzM3LDQgQEAgRmxvYXRQb2ludCBDQ01hdGhV
dGlsOjpwcm9qZWN0UG9pbnQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY28KICAgICByZXR1cm4gaC5jYXJ0ZXNpYW5Qb2ludDJkKCk7CiB9CiAKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5oCmluZGV4IGNiY2VkYTBhMTc0M2UxODYzMWVk
ZmRhNTQyNmNjNWFmNWJiY2YwYWQuLmEyODdkNDM4NDk2MzA2MGE3MWM5YjQwZGY3NGVjNTdmMGJk
ZDk3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTWF0aFV0aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NN
YXRoVXRpbF9oCiAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiRmxvYXRQb2lu
dDNELmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg7CkBAIC02Miw2ICs2MywxNyBAQCBzdHJ1Y3QgSG9tb2dlbmVvdXNDb29yZGluYXRlIHsKICAg
ICAgICAgcmV0dXJuIEZsb2F0UG9pbnQoeCAqIGludlcsIHkgKiBpbnZXKTsKICAgICB9CiAKKyAg
ICBGbG9hdFBvaW50M0QgY2FydGVzaWFuUG9pbnQzZCgpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAodyA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQzRCh4LCB5LCB6KTsKKwor
ICAgICAgICAvLyBGb3Igbm93LCBiZWNhdXNlIHRoaXMgY29kZSBpcyB1c2VkIHByaXZhdGVseSBv
bmx5IGJ5IENDTWF0aFV0aWwsIGl0IHNob3VsZCBuZXZlciBiZSBjYWxsZWQgd2hlbiB3ID09IDAs
IGFuZCB3ZSBkbyBub3QgeWV0IG5lZWQgdG8gaGFuZGxlIHRoYXQgY2FzZS4KKyAgICAgICAgQVNT
RVJUKHcpOworICAgICAgICBkb3VibGUgaW52VyA9IDEuMCAvIHc7CisgICAgICAgIHJldHVybiBG
bG9hdFBvaW50M0QoeCAqIGludlcsIHkgKiBpbnZXLCB6ICogaW52Vyk7CisgICAgfQorCiAgICAg
ZG91YmxlIHg7CiAgICAgZG91YmxlIHk7CiAgICAgZG91YmxlIHo7CkBAIC05Nyw2ICsxMDksNyBA
QCBwdWJsaWM6CiAgICAgLy8gTk9URTogVGhlc2UgZnVuY3Rpb25zIGRvIG5vdCBkbyBjb3JyZWN0
IGNsaXBwaW5nIGFnYWluc3QgdyA9IDAgcGxhbmUsIGJ1dCB0aGV5CiAgICAgLy8gY29ycmVjdGx5
IGRldGVjdCB0aGUgY2xpcHBlZCBjb25kaXRpb24gdmlhIHRoZSBib29sZWFuIGNsaXBwZWQuCiAg
ICAgc3RhdGljIEZsb2F0UXVhZCBtYXBRdWFkKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBGbG9hdFF1YWQmLCBib29sJiBjbGlwcGVkKTsKKyAgICBzdGF0aWMg
RmxvYXRQb2ludDNEIG1hcFBvaW50KGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBjb25zdCBGbG9hdFBvaW50M0QmLCBib29sJiBjbGlwcGVkKTsKICAgICBzdGF0aWMgRmxv
YXRRdWFkIHByb2plY3RRdWFkKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBjb25zdCBGbG9hdFF1YWQmLCBib29sJiBjbGlwcGVkKTsKICAgICBzdGF0aWMgRmxvYXRQb2lu
dCBwcm9qZWN0UG9pbnQoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IEZsb2F0UG9pbnQmLCBib29sJiBjbGlwcGVkKTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150456</attachid>
            <date>2012-07-02 11:38:54 -0700</date>
            <delta_ts>2012-07-30 15:23:37 -0700</delta_ts>
            <desc>map instead of project in drawTileQuad</desc>
            <filename>bug-90329-20120702113853.patch</filename>
            <type>text/plain</type>
            <size>12514</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxNjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwYjFhNjQ3MTc0ZjZm
YzY5YzJlY2JiYWU4YjVjMzA1YTkzNTgwYjQ3Li5kMmUwYzJmZDQyZDJkY2M3Yjg0MDU2MzgzNWQz
M2YzN2I4N2YzOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gUmVtb3ZlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludCBvdmVycmlkZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMzI5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNsaXBw
aW5nLXVuYXdhcmUgbWFwUG9pbnQgZnVuY3Rpb25zIGZyb20gdGhlIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGludGVyZmFjZS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oOgorICAgICAgICAoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgpOgorCiAy
MDEyLTA2LTI5ICBUb255IFBheW5lICA8dHBheW5lQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZW1vdmUgdHlwZSBmcm9tIHNjcmVlbkNvbG9yUHJvZmlsZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmNTkz
MjIzMzgwOGIxYmM5YzRkMTJkMGUyY2Q2ZjMwODZmNjhmNzRjLi4xYjAxOWMwMDc5YWQzOThmNjNl
ZWYyOGI2MTE5Yzg5MWNlNTBkM2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjkgQEAKIDIwMTIt
MDYtMjkgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBb
Y2hyb21pdW1dIFJlbW92ZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQgb3ZlcnJp
ZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDMy
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBt
b3JlIGZ1bmN0aW9uYWxpdHkgZm9yIG1hcHBpbmcgcG9pbnRzIHRvIENDTWF0aFV0aWwgYW5kIHVz
ZSBpdCBpbiBDQ0xheWVyU29ydGVyIC8gZHJhd1RpbGVRdWFkLiBUaGVzZQorICAgICAgICBtYXBw
aW5ncyBzaG91bGQgbmV2ZXIgY2xpcC4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlOjpMYXllclNoYXBlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om1hcEhvbW9nZW5lb3VzUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NNYXRo
VXRpbDo6bWFwUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5oOgorICAgICAgICAoV2ViQ29yZTo6SG9t
b2dlbmVvdXNDb29yZGluYXRlOjpjYXJ0ZXNpYW5Qb2ludDNkKToKKyAgICAgICAgKEhvbW9nZW5l
b3VzQ29vcmRpbmF0ZSk6CisgICAgICAgIChDQ01hdGhVdGlsKToKKworMjAxMi0wNi0yOSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0g
VXNlIENDVGhyZWFkOjpUYXNrIGluIGNvbXBvc2l0b3IncyBSYXRlTGltaXRlciBpbnN0ZWFkIG9m
IFRpbWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MDMwMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRy
YW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlRyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggMGZmZTBjNDA1MmE0NjhlMjNmOGFhMDA3YjMy
NjYwNDUzYjE5MDZjMi4uOWRlOWUyYzRjMTdjYzQ5ZDBlNjQ2YzEwNzcwOGI1ZGM4MTRlNjgwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXguaApAQCAtMTM3LDEzICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgLy8g
Q29udmVyc2lvbnMgYmV0d2VlbiBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGFuZCBX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeAogICAgIGV4cGxpY2l0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgV2Vi
Q29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXggdG9XZWJDb3JlVHJhbnNmb3JtKCkgY29uc3Q7Ci0K
LSAgICAvLyBGSVhNRTogdGhlc2UgbWFwIGZ1bmN0aW9ucyBzaG91bGQgbm90IGV4aXN0LCBzaG91
bGQgYmUgdXNpbmcgQ0NNYXRoVXRpbAotICAgIC8vIGluc3RlYWQuIEV2ZW50dWFsbHkgQ0NNYXRo
VXRpbCBmdW5jdGlvbnMgY291bGQgYmUgbWVyZ2VkIGhlcmUsIGJ1dCBpdHMKLSAgICAvLyBub3Qg
eWV0IHRoZSByaWdodCB0aW1lIGZvciB0aGF0LgotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCBt
YXBQb2ludChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKSBjb25zdDsKLSAgICBXZWJDb3Jl
OjpGbG9hdFBvaW50IG1hcFBvaW50KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBjb25zdDsK
LSAgICBXZWJDb3JlOjpJbnRQb2ludCBtYXBQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
IGNvbnN0OwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHAKaW5kZXggY2IyNTlmMDUxZWY4ODU3OGZjNGNkNzZmMWI2YWFiN2U3NTE0ZTZj
Zi4uNmQ5OTQ0MGQ1MGJjMjgxMmY2OGExYTk3NWM5ZWRkNzVjNzdkOTk0ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTQyMiwxOSArNDIyLDQgQEAgVHJhbnNm
b3JtYXRpb25NYXRyaXggV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OnRvV2ViQ29yZVRyYW5zZm9y
bSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcHJpdmF0ZTsKIH0KIAotRmxvYXRQb2ludDNEIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludChjb25zdCBGbG9hdFBvaW50M0QmIHApIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS5tYXBQb2ludChwKTsKLX0KLQotRmxvYXRQb2ludCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLm1hcFBvaW50KHApOwotfQotCi1JbnRQb2ludCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bWFwUG9pbnQoY29uc3QgSW50UG9pbnQmIHApIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS5tYXBQb2ludChwKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA3Yzgx
ODFkMzAyNTBkNjRmOTVkODRiYzFmOTQyYTljYTZhODczOTg3Li5jOWU2YTA5ZDc2M2JjNzgzYzNm
MTRiYzY1OGQyZWU5NTNlNDg1Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1
bS5jcHAKQEAgLTgxOCwxMCArODE4LDE0IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIEZsb2F0UG9p
bnQgdG9wUmlnaHQodGlsZVJlY3QubWF4WCgpLCB0aWxlUmVjdC55KCkpOwogCiAgICAgICAgIC8v
IE1hcCBwb2ludHMgdG8gZGV2aWNlIHNwYWNlLgotICAgICAgICBib3R0b21SaWdodCA9IGRldmlj
ZVRyYW5zZm9ybS5tYXBQb2ludChib3R0b21SaWdodCk7Ci0gICAgICAgIGJvdHRvbUxlZnQgPSBk
ZXZpY2VUcmFuc2Zvcm0ubWFwUG9pbnQoYm90dG9tTGVmdCk7Ci0gICAgICAgIHRvcExlZnQgPSBk
ZXZpY2VUcmFuc2Zvcm0ubWFwUG9pbnQodG9wTGVmdCk7Ci0gICAgICAgIHRvcFJpZ2h0ID0gZGV2
aWNlVHJhbnNmb3JtLm1hcFBvaW50KHRvcFJpZ2h0KTsKKyAgICAgICAgYm90dG9tUmlnaHQgPSBD
Q01hdGhVdGlsOjptYXBQb2ludChkZXZpY2VUcmFuc2Zvcm0sIGJvdHRvbVJpZ2h0LCBjbGlwcGVk
KTsKKyAgICAgICAgQVNTRVJUKCFjbGlwcGVkKTsKKyAgICAgICAgYm90dG9tTGVmdCA9IENDTWF0
aFV0aWw6Om1hcFBvaW50KGRldmljZVRyYW5zZm9ybSwgYm90dG9tTGVmdCwgY2xpcHBlZCk7Cisg
ICAgICAgIEFTU0VSVCghY2xpcHBlZCk7CisgICAgICAgIHRvcExlZnQgPSBDQ01hdGhVdGlsOjpt
YXBQb2ludChkZXZpY2VUcmFuc2Zvcm0sIHRvcExlZnQsIGNsaXBwZWQpOworICAgICAgICBBU1NF
UlQoIWNsaXBwZWQpOworICAgICAgICB0b3BSaWdodCA9IENDTWF0aFV0aWw6Om1hcFBvaW50KGRl
dmljZVRyYW5zZm9ybSwgdG9wUmlnaHQsIGNsaXBwZWQpOworICAgICAgICBBU1NFUlQoIWNsaXBw
ZWQpOwogCiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIGJvdHRvbUVkZ2UoYm90dG9tUmlnaHQs
IGJvdHRvbUxlZnQpOwogICAgICAgICBDQ0xheWVyUXVhZDo6RWRnZSBsZWZ0RWRnZShib3R0b21M
ZWZ0LCB0b3BMZWZ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAKaW5kZXggZmRmM2M3YmIy
NzVjMTY3MTMzZmExMDhkMTFhMzBkMWY4MzJhZTBmMy4uNjc4OGUxYWJkMzIxM2Q5NWJlODk4MGEz
MjdiMTc0YWMxOTFmNmQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAKQEAgLTE4Niw5
ICsxODYsMTMgQEAgQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZTo6TGF5ZXJTaGFwZShmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0LCBjb25zdCBXZWJUcmFuc2YKICAgICAgICAgcHJvamVjdGVkUXVh
ZC5zZXRQNChjbGlwcGVkUXVhZFsyXSk7IC8vIHRoaXMgd2lsbCBiZSBhIGRlZ2VuZXJhdGUgcXVh
ZCB0aGF0IGlzIGFjdHVhbGx5IGEgdHJpYW5nbGUuCiAKICAgICAvLyBDb21wdXRlIHRoZSBub3Jt
YWwgb2YgdGhlIGxheWVyJ3MgcGxhbmUuCi0gICAgRmxvYXRQb2ludDNEIGMxID0gZHJhd1RyYW5z
Zm9ybS5tYXBQb2ludChGbG9hdFBvaW50M0QoMCwgMCwgMCkpOwotICAgIEZsb2F0UG9pbnQzRCBj
MiA9IGRyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludDNEKDAsIDEsIDApKTsKLSAgICBG
bG9hdFBvaW50M0QgYzMgPSBkcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQzRCgxLCAw
LCAwKSk7CisgICAgYm9vbCBjbGlwcGVkID0gZmFsc2U7CisgICAgRmxvYXRQb2ludDNEIGMxID0g
Q0NNYXRoVXRpbDo6bWFwUG9pbnQoZHJhd1RyYW5zZm9ybSwgRmxvYXRQb2ludDNEKDAsIDAsIDAp
LCBjbGlwcGVkKTsKKyAgICBBU1NFUlQoIWNsaXBwZWQpOworICAgIEZsb2F0UG9pbnQzRCBjMiA9
IENDTWF0aFV0aWw6Om1hcFBvaW50KGRyYXdUcmFuc2Zvcm0sIEZsb2F0UG9pbnQzRCgwLCAxLCAw
KSwgY2xpcHBlZCk7CisgICAgQVNTRVJUKCFjbGlwcGVkKTsKKyAgICBGbG9hdFBvaW50M0QgYzMg
PSBDQ01hdGhVdGlsOjptYXBQb2ludChkcmF3VHJhbnNmb3JtLCBGbG9hdFBvaW50M0QoMSwgMCwg
MCksIGNsaXBwZWQpOworICAgIEFTU0VSVCghY2xpcHBlZCk7CiAgICAgRmxvYXRQb2ludDNEIGMx
MiA9IGMyIC0gYzE7CiAgICAgRmxvYXRQb2ludDNEIGMxMyA9IGMzIC0gYzE7CiAgICAgbGF5ZXJO
b3JtYWwgPSBjMTMuY3Jvc3MoYzEyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAKaW5kZXggMDA3ZTc0
ZDQ5YjMyY2MwZmFlZDA2YTExMmIzODBkMWM5ZjNkM2NlMC4uZjliZTc2N2E4MTY3MWZiNDk1YTc1
YjdkN2FkNTIyNjU1ZjU5NGYxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAKQEAgLTU3LDE3ICs1
NywxNyBAQCBzdGF0aWMgSG9tb2dlbmVvdXNDb29yZGluYXRlIHByb2plY3RIb21vZ2VuZW91c1Bv
aW50KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cgogICAgIHJldHVybiBIb21vZ2VuZW91c0Nv
b3JkaW5hdGUob3V0WCwgb3V0WSwgb3V0Wiwgb3V0Vyk7CiB9CiAKLXN0YXRpYyBIb21vZ2VuZW91
c0Nvb3JkaW5hdGUgbWFwSG9tb2dlbmVvdXNQb2ludChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwKQorc3RhdGljIEhvbW9nZW5lb3Vz
Q29vcmRpbmF0ZSBtYXBIb21vZ2VuZW91c1BvaW50KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQzRCYgcCkKIHsKICAgICBkb3VibGUgeCA9
IHAueCgpOwogICAgIGRvdWJsZSB5ID0gcC55KCk7Ci0gICAgLy8gaW1wbGljaXQgZGVmaW5pdGlv
biBvZiB6ID0gMDsKKyAgICBkb3VibGUgeiA9IHAueigpOwogICAgIC8vIGltcGxpY2l0IGRlZmlu
aXRpb24gb2YgdyA9IDE7CiAKLSAgICBkb3VibGUgb3V0WCA9IHggKiB0cmFuc2Zvcm0ubTExKCkg
KyB5ICogdHJhbnNmb3JtLm0yMSgpICsgdHJhbnNmb3JtLm00MSgpOwotICAgIGRvdWJsZSBvdXRZ
ID0geCAqIHRyYW5zZm9ybS5tMTIoKSArIHkgKiB0cmFuc2Zvcm0ubTIyKCkgKyB0cmFuc2Zvcm0u
bTQyKCk7Ci0gICAgZG91YmxlIG91dFogPSB4ICogdHJhbnNmb3JtLm0xMygpICsgeSAqIHRyYW5z
Zm9ybS5tMjMoKSArIHRyYW5zZm9ybS5tNDMoKTsKLSAgICBkb3VibGUgb3V0VyA9IHggKiB0cmFu
c2Zvcm0ubTE0KCkgKyB5ICogdHJhbnNmb3JtLm0yNCgpICsgdHJhbnNmb3JtLm00NCgpOworICAg
IGRvdWJsZSBvdXRYID0geCAqIHRyYW5zZm9ybS5tMTEoKSArIHkgKiB0cmFuc2Zvcm0ubTIxKCkg
KyB6ICogdHJhbnNmb3JtLm0zMSgpICsgdHJhbnNmb3JtLm00MSgpOworICAgIGRvdWJsZSBvdXRZ
ID0geCAqIHRyYW5zZm9ybS5tMTIoKSArIHkgKiB0cmFuc2Zvcm0ubTIyKCkgKyB6ICogdHJhbnNm
b3JtLm0zMigpICsgdHJhbnNmb3JtLm00MigpOworICAgIGRvdWJsZSBvdXRaID0geCAqIHRyYW5z
Zm9ybS5tMTMoKSArIHkgKiB0cmFuc2Zvcm0ubTIzKCkgKyB6ICogdHJhbnNmb3JtLm0zMygpICsg
dHJhbnNmb3JtLm00MygpOworICAgIGRvdWJsZSBvdXRXID0geCAqIHRyYW5zZm9ybS5tMTQoKSAr
IHkgKiB0cmFuc2Zvcm0ubTI0KCkgKyB6ICogdHJhbnNmb3JtLm0zNCgpICsgdHJhbnNmb3JtLm00
NCgpOwogCiAgICAgcmV0dXJuIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZShvdXRYLCBvdXRZLCBvdXRa
LCBvdXRXKTsKIH0KQEAgLTI3NCw2ICsyNzQsNTIgQEAgRmxvYXRRdWFkIENDTWF0aFV0aWw6Om1h
cFF1YWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmwK
ICAgICByZXR1cm4gRmxvYXRRdWFkKGgxLmNhcnRlc2lhblBvaW50MmQoKSwgaDIuY2FydGVzaWFu
UG9pbnQyZCgpLCBoMy5jYXJ0ZXNpYW5Qb2ludDJkKCksIGg0LmNhcnRlc2lhblBvaW50MmQoKSk7
CiB9CiAKK0Zsb2F0UG9pbnQgQ0NNYXRoVXRpbDo6bWFwUG9pbnQoY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcCwgYm9vbCYgY2xpcHBl
ZCkKK3sKKyAgICBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgaCA9IG1hcEhvbW9nZW5lb3VzUG9pbnQo
dHJhbnNmb3JtLCBwKTsKKworICAgIGlmIChoLncgPiAwKSB7CisgICAgICAgIGNsaXBwZWQgPSBm
YWxzZTsKKyAgICAgICAgcmV0dXJuIGguY2FydGVzaWFuUG9pbnQyZCgpOworICAgIH0KKworICAg
IC8vIFRoZSBjYXJ0ZXNpYW4gY29vcmRpbmF0ZXMgd2lsbCBiZSBpbnZhbGlkIGFmdGVyIGRpdmlk
aW5nIGJ5IHcuCisgICAgY2xpcHBlZCA9IHRydWU7CisKKyAgICAvLyBBdm9pZCBkaXZpZGluZyBi
eSB3IGlmIHcgPT0gMC4KKyAgICBpZiAoIWgudykKKyAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQo
KTsKKworICAgIC8vIFRoaXMgcmV0dXJuIHZhbHVlIHdpbGwgYmUgaW52YWxpZCBiZWNhdXNlIGNs
aXBwZWQgPT0gdHJ1ZSwgYnV0ICgxKSB1c2VycyBvZiB0aGlzCisgICAgLy8gY29kZSBzaG91bGQg
YmUgaWdub3JpbmcgdGhlIHJldHVybiB2YWx1ZSB3aGVuIGNsaXBwZWQgPT0gdHJ1ZSBhbnl3YXks
IGFuZCAoMikgdGhpcworICAgIC8vIGJlaGF2aW9yIGlzIG1vcmUgY29uc2lzdGVudCB3aXRoIGV4
aXN0aW5nIGJlaGF2aW9yIG9mIFdlYktpdCB0cmFuc2Zvcm1zIGlmIHRoZSB1c2VyCisgICAgLy8g
cmVhbGx5IGRvZXMgbm90IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlLgorICAgIHJldHVybiBoLmNh
cnRlc2lhblBvaW50MmQoKTsKK30KKworRmxvYXRQb2ludDNEIENDTWF0aFV0aWw6Om1hcFBvaW50
KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQzRCYgcCwgYm9vbCYgY2xpcHBlZCkKK3sKKyAgICBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgaCA9
IG1hcEhvbW9nZW5lb3VzUG9pbnQodHJhbnNmb3JtLCBwKTsKKworICAgIGlmIChoLncgPiAwKSB7
CisgICAgICAgIGNsaXBwZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGguY2FydGVzaWFuUG9p
bnQzZCgpOworICAgIH0KKworICAgIC8vIFRoZSBjYXJ0ZXNpYW4gY29vcmRpbmF0ZXMgd2lsbCBi
ZSBpbnZhbGlkIGFmdGVyIGRpdmlkaW5nIGJ5IHcuCisgICAgY2xpcHBlZCA9IHRydWU7CisKKyAg
ICAvLyBBdm9pZCBkaXZpZGluZyBieSB3IGlmIHcgPT0gMC4KKyAgICBpZiAoIWgudykKKyAgICAg
ICAgcmV0dXJuIEZsb2F0UG9pbnQzRCgpOworCisgICAgLy8gVGhpcyByZXR1cm4gdmFsdWUgd2ls
bCBiZSBpbnZhbGlkIGJlY2F1c2UgY2xpcHBlZCA9PSB0cnVlLCBidXQgKDEpIHVzZXJzIG9mIHRo
aXMKKyAgICAvLyBjb2RlIHNob3VsZCBiZSBpZ25vcmluZyB0aGUgcmV0dXJuIHZhbHVlIHdoZW4g
Y2xpcHBlZCA9PSB0cnVlIGFueXdheSwgYW5kICgyKSB0aGlzCisgICAgLy8gYmVoYXZpb3IgaXMg
bW9yZSBjb25zaXN0ZW50IHdpdGggZXhpc3RpbmcgYmVoYXZpb3Igb2YgV2ViS2l0IHRyYW5zZm9y
bXMgaWYgdGhlIHVzZXIKKyAgICAvLyByZWFsbHkgZG9lcyBub3QgaWdub3JlIHRoZSByZXR1cm4g
dmFsdWUuCisgICAgcmV0dXJuIGguY2FydGVzaWFuUG9pbnQzZCgpOworfQorCiBGbG9hdFF1YWQg
Q0NNYXRoVXRpbDo6cHJvamVjdFF1YWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRRdWFkJiBxLCBib29sJiBjbGlwcGVkKQogewogICAgIEZsb2F0
UXVhZCBwcm9qZWN0ZWRRdWFkOwpAQCAtMzE0LDUgKzM2MCw0IEBAIEZsb2F0UG9pbnQgQ0NNYXRo
VXRpbDo6cHJvamVjdFBvaW50KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvCiAgICAgcmV0dXJuIGguY2FydGVzaWFuUG9pbnQyZCgpOwogfQogCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuaAppbmRleCBjYmNlZGEwYTE3NDNlMTg2MzFl
ZGZkYTU0MjZjYzVhZjViYmNmMGFkLi4wNGU4NTBlYmQ2YjQyM2M1MzMzMDBhZDVhZGJkNTAxMTFk
NWU1M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ01hdGhVdGlsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIEND
TWF0aFV0aWxfaAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZsb2F0UG9p
bnQzRC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OwpAQCAtNjIsNiArNjMsMTcgQEAgc3RydWN0IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSB7CiAg
ICAgICAgIHJldHVybiBGbG9hdFBvaW50KHggKiBpbnZXLCB5ICogaW52Vyk7CiAgICAgfQogCisg
ICAgRmxvYXRQb2ludDNEIGNhcnRlc2lhblBvaW50M2QoKSBjb25zdAorICAgIHsKKyAgICAgICAg
aWYgKHcgPT0gMSkKKyAgICAgICAgICAgIHJldHVybiBGbG9hdFBvaW50M0QoeCwgeSwgeik7CisK
KyAgICAgICAgLy8gRm9yIG5vdywgYmVjYXVzZSB0aGlzIGNvZGUgaXMgdXNlZCBwcml2YXRlbHkg
b25seSBieSBDQ01hdGhVdGlsLCBpdCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIHdoZW4gdyA9PSAw
LCBhbmQgd2UgZG8gbm90IHlldCBuZWVkIHRvIGhhbmRsZSB0aGF0IGNhc2UuCisgICAgICAgIEFT
U0VSVCh3KTsKKyAgICAgICAgZG91YmxlIGludlcgPSAxLjAgLyB3OworICAgICAgICByZXR1cm4g
RmxvYXRQb2ludDNEKHggKiBpbnZXLCB5ICogaW52VywgeiAqIGludlcpOworICAgIH0KKwogICAg
IGRvdWJsZSB4OwogICAgIGRvdWJsZSB5OwogICAgIGRvdWJsZSB6OwpAQCAtOTcsNiArMTA5LDgg
QEAgcHVibGljOgogICAgIC8vIE5PVEU6IFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgZG8gY29ycmVj
dCBjbGlwcGluZyBhZ2FpbnN0IHcgPSAwIHBsYW5lLCBidXQgdGhleQogICAgIC8vIGNvcnJlY3Rs
eSBkZXRlY3QgdGhlIGNsaXBwZWQgY29uZGl0aW9uIHZpYSB0aGUgYm9vbGVhbiBjbGlwcGVkLgog
ICAgIHN0YXRpYyBGbG9hdFF1YWQgbWFwUXVhZChjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgY29uc3QgRmxvYXRRdWFkJiwgYm9vbCYgY2xpcHBlZCk7CisgICAgc3RhdGlj
IEZsb2F0UG9pbnQgbWFwUG9pbnQoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29sJiBjbGlwcGVkKTsKKyAgICBzdGF0aWMgRmxvYXRQ
b2ludDNEIG1hcFBvaW50KGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBj
b25zdCBGbG9hdFBvaW50M0QmLCBib29sJiBjbGlwcGVkKTsKICAgICBzdGF0aWMgRmxvYXRRdWFk
IHByb2plY3RRdWFkKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25z
dCBGbG9hdFF1YWQmLCBib29sJiBjbGlwcGVkKTsKICAgICBzdGF0aWMgRmxvYXRQb2ludCBwcm9q
ZWN0UG9pbnQoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZs
b2F0UG9pbnQmLCBib29sJiBjbGlwcGVkKTsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155382</attachid>
            <date>2012-07-30 15:23:40 -0700</date>
            <delta_ts>2012-07-30 15:31:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90329-20120730152324.patch</filename>
            <type>text/plain</type>
            <size>12479</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAxMDJkOTYzZTlmMzgw
ZjczN2QyYjg5MTRlMGJkZGZjZWNmYjdiMjJhLi5lNDE3N2Q0ZWVkNmNjMWE4NDQzYmE2MjQwOTlm
NjNkYmE2NTU5NzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNi0yOSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gUmVtb3ZlIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OjptYXBQb2ludCBvdmVycmlkZXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMzI5CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNsaXBw
aW5nLXVuYXdhcmUgbWFwUG9pbnQgZnVuY3Rpb25zIGZyb20gdGhlIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGludGVyZmFjZS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oOgorICAgICAgICAoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgpOgorCiAy
MDEyLTA3LTMwICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAgICAg
W2Nocm9taXVtXSBSZW1vdmUgZGVwZW5kZW5jeSBvbiBTY3JvbGxiYXJUaGVtZSBmcm9tIHRoZSBj
b21wb3NpdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTgwMjY2YjhiMzQ3MjI3Yzc2ZTdhZTgzZTI4OWVmYWEw
OGVhYmJmMi4uMDU4MTRlMmViZDdkNTdhNzRhNzUxMjBmYzcyY2M5ZjA1ZWNiZGYwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA2LTI5ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXg6Om1hcFBvaW50IG92ZXJyaWRlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAzMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW9yZSBmdW5jdGlvbmFsaXR5IGZvciBtYXBwaW5n
IHBvaW50cyB0byBDQ01hdGhVdGlsIGFuZCB1c2UgaXQgaW4gQ0NMYXllclNvcnRlciAvIGRyYXdU
aWxlUXVhZC4gVGhlc2UKKyAgICAgICAgbWFwcGluZ3Mgc2hvdWxkIG5ldmVyIGNsaXAuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpk
cmF3VGlsZVF1YWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJTb3J0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6TGF5ZXJT
aGFwZTo6TGF5ZXJTaGFwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NNYXRoVXRpbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXBIb21vZ2VuZW91c1BvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTWF0aFV0aWw6Om1hcFBvaW50KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0
aWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhvbW9nZW5lb3VzQ29vcmRpbmF0ZTo6Y2FydGVzaWFu
UG9pbnQzZCk6CisgICAgICAgIChIb21vZ2VuZW91c0Nvb3JkaW5hdGUpOgorICAgICAgICAoQ0NN
YXRoVXRpbCk6CisKIDIwMTItMDctMzAgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBtaXNjZWxsYW5lb3VzIG1pc3NpbmcgaW5j
bHVkZXMgYW5kIE9WRVJSSURFIGRlY2xhcmF0aW9ucyBpbiBjb21wb3NpdG9yIGNvZGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXguaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXguaAppbmRleCAwZmZlMGM0MDUyYTQ2OGUyM2Y4YWEwMDdiMzI2NjA0NTNiMTkwNmMy
Li45ZGU5ZTJjNGMxN2NjNDlkMGU2NDZjMTA3NzA4YjVkYzgxNGU2ODA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmgK
KysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oCkBAIC0xMzcsMTMgKzEzNyw2IEBAIHB1YmxpYzoKICAgICAvLyBDb252ZXJzaW9ucyBi
ZXR3ZWVuIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggYW5kIFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4CiAgICAgZXhwbGljaXQgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoY29u
c3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAgICBXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0b1dlYkNvcmVUcmFuc2Zvcm0oKSBjb25zdDsKLQotICAgIC8vIEZJWE1F
OiB0aGVzZSBtYXAgZnVuY3Rpb25zIHNob3VsZCBub3QgZXhpc3QsIHNob3VsZCBiZSB1c2luZyBD
Q01hdGhVdGlsCi0gICAgLy8gaW5zdGVhZC4gRXZlbnR1YWxseSBDQ01hdGhVdGlsIGZ1bmN0aW9u
cyBjb3VsZCBiZSBtZXJnZWQgaGVyZSwgYnV0IGl0cwotICAgIC8vIG5vdCB5ZXQgdGhlIHJpZ2h0
IHRpbWUgZm9yIHRoYXQuCi0gICAgV2ViQ29yZTo6RmxvYXRQb2ludDNEIG1hcFBvaW50KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpIGNvbnN0OwotICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQg
bWFwUG9pbnQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpIGNvbnN0OwotICAgIFdlYkNvcmU6
OkludFBvaW50IG1hcFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgY29uc3Q7CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApp
bmRleCBjYjI1OWYwNTFlZjg4NTc4ZmM0Y2Q3NmYxYjZhYWI3ZTc1MTRlNmNmLi42ZDk5NDQwZDUw
YmMyODEyZjY4YTFhOTc1YzllZGQ3NWM3N2Q5OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcApAQCAtNDIyLDE5ICs0MjIsNCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6dG9XZWJDb3JlVHJhbnNmb3JtKCkgY29uc3QKICAg
ICByZXR1cm4gbV9wcml2YXRlOwogfQogCi1GbG9hdFBvaW50M0QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om1hcFBvaW50KGNvbnN0IEZsb2F0UG9pbnQzRCYgcCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlLm1hcFBvaW50KHApOwotfQotCi1GbG9hdFBvaW50IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjptYXBQb2ludChjb25zdCBGbG9hdFBvaW50JiBwKSBjb25zdAotewotICAgIHJl
dHVybiBtX3ByaXZhdGUubWFwUG9pbnQocCk7Ci19Ci0KLUludFBvaW50IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OjptYXBQb2ludChjb25zdCBJbnRQb2ludCYgcCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlLm1hcFBvaW50KHApOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGM0ZjEzOGFiNzFjNmJiYTUw
MGE1ZGIwNzQ4Y2FlMzQxYTMzMTk4YTQuLjMyMzE0MzVmMmU2ZWYzZDRhYTU0OWZhOWU5ZTAxMjM5
YThkNWVjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtODg0
LDEwICs4ODQsMTQgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChE
cmF3aW5nRnJhbWUmIGZyYW1lLCBjb25zdCBDQ1RpbGVEcmF3UXUKICAgICAgICAgRmxvYXRQb2lu
dCB0b3BSaWdodCh0aWxlUmVjdC5tYXhYKCksIHRpbGVSZWN0LnkoKSk7CiAKICAgICAgICAgLy8g
TWFwIHBvaW50cyB0byBkZXZpY2Ugc3BhY2UuCi0gICAgICAgIGJvdHRvbVJpZ2h0ID0gZGV2aWNl
VHJhbnNmb3JtLm1hcFBvaW50KGJvdHRvbVJpZ2h0KTsKLSAgICAgICAgYm90dG9tTGVmdCA9IGRl
dmljZVRyYW5zZm9ybS5tYXBQb2ludChib3R0b21MZWZ0KTsKLSAgICAgICAgdG9wTGVmdCA9IGRl
dmljZVRyYW5zZm9ybS5tYXBQb2ludCh0b3BMZWZ0KTsKLSAgICAgICAgdG9wUmlnaHQgPSBkZXZp
Y2VUcmFuc2Zvcm0ubWFwUG9pbnQodG9wUmlnaHQpOworICAgICAgICBib3R0b21SaWdodCA9IEND
TWF0aFV0aWw6Om1hcFBvaW50KGRldmljZVRyYW5zZm9ybSwgYm90dG9tUmlnaHQsIGNsaXBwZWQp
OworICAgICAgICBBU1NFUlQoIWNsaXBwZWQpOworICAgICAgICBib3R0b21MZWZ0ID0gQ0NNYXRo
VXRpbDo6bWFwUG9pbnQoZGV2aWNlVHJhbnNmb3JtLCBib3R0b21MZWZ0LCBjbGlwcGVkKTsKKyAg
ICAgICAgQVNTRVJUKCFjbGlwcGVkKTsKKyAgICAgICAgdG9wTGVmdCA9IENDTWF0aFV0aWw6Om1h
cFBvaW50KGRldmljZVRyYW5zZm9ybSwgdG9wTGVmdCwgY2xpcHBlZCk7CisgICAgICAgIEFTU0VS
VCghY2xpcHBlZCk7CisgICAgICAgIHRvcFJpZ2h0ID0gQ0NNYXRoVXRpbDo6bWFwUG9pbnQoZGV2
aWNlVHJhbnNmb3JtLCB0b3BSaWdodCwgY2xpcHBlZCk7CisgICAgICAgIEFTU0VSVCghY2xpcHBl
ZCk7CiAKICAgICAgICAgQ0NMYXllclF1YWQ6OkVkZ2UgYm90dG9tRWRnZShib3R0b21SaWdodCwg
Ym90dG9tTGVmdCk7CiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIGxlZnRFZGdlKGJvdHRvbUxl
ZnQsIHRvcExlZnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcAppbmRleCA0ODgwMmQ2Njdm
NDYyNGRiMGU0NGNmNTlmNWIxOWZkNjM2ZWRjZjRkLi4wY2I3MDNiNDI0NDk2N2JkOTgzYTBmYzdi
YzljMDRhMmJjYWMzNTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcApAQCAtMTgzLDkg
KzE4MywxMSBAQCBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlOjpMYXllclNoYXBlKGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGNvbnN0IFdlYlRyYW5zZgogICAgICAgICBwcm9qZWN0ZWRRdWFk
LnNldFA0KGNsaXBwZWRRdWFkWzJdKTsgLy8gdGhpcyB3aWxsIGJlIGEgZGVnZW5lcmF0ZSBxdWFk
IHRoYXQgaXMgYWN0dWFsbHkgYSB0cmlhbmdsZS4KIAogICAgIC8vIENvbXB1dGUgdGhlIG5vcm1h
bCBvZiB0aGUgbGF5ZXIncyBwbGFuZS4KLSAgICBGbG9hdFBvaW50M0QgYzEgPSBkcmF3VHJhbnNm
b3JtLm1hcFBvaW50KEZsb2F0UG9pbnQzRCgwLCAwLCAwKSk7Ci0gICAgRmxvYXRQb2ludDNEIGMy
ID0gZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50M0QoMCwgMSwgMCkpOwotICAgIEZs
b2F0UG9pbnQzRCBjMyA9IGRyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludDNEKDEsIDAs
IDApKTsKKyAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKKyAgICBGbG9hdFBvaW50M0QgYzEgPSBD
Q01hdGhVdGlsOjptYXBQb2ludChkcmF3VHJhbnNmb3JtLCBGbG9hdFBvaW50M0QoMCwgMCwgMCks
IGNsaXBwZWQpOworICAgIEZsb2F0UG9pbnQzRCBjMiA9IENDTWF0aFV0aWw6Om1hcFBvaW50KGRy
YXdUcmFuc2Zvcm0sIEZsb2F0UG9pbnQzRCgwLCAxLCAwKSwgY2xpcHBlZCk7CisgICAgRmxvYXRQ
b2ludDNEIGMzID0gQ0NNYXRoVXRpbDo6bWFwUG9pbnQoZHJhd1RyYW5zZm9ybSwgRmxvYXRQb2lu
dDNEKDEsIDAsIDApLCBjbGlwcGVkKTsKKyAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGNsaXBwaW5n
LgogICAgIEZsb2F0UG9pbnQzRCBjMTIgPSBjMiAtIGMxOwogICAgIEZsb2F0UG9pbnQzRCBjMTMg
PSBjMyAtIGMxOwogICAgIGxheWVyTm9ybWFsID0gYzEzLmNyb3NzKGMxMik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGls
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0
aFV0aWwuY3BwCmluZGV4IDAwN2U3NGQ0OWIzMmNjMGZhZWQwNmExMTJiMzgwZDFjOWYzZDNjZTAu
LmY5YmU3NjdhODE2NzFmYjQ5NWE3NWI3ZDdhZDUyMjY1NWY1OTRmMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0
aFV0aWwuY3BwCkBAIC01NywxNyArNTcsMTcgQEAgc3RhdGljIEhvbW9nZW5lb3VzQ29vcmRpbmF0
ZSBwcm9qZWN0SG9tb2dlbmVvdXNQb2ludChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHIKICAg
ICByZXR1cm4gSG9tb2dlbmVvdXNDb29yZGluYXRlKG91dFgsIG91dFksIG91dFosIG91dFcpOwog
fQogCi1zdGF0aWMgSG9tb2dlbmVvdXNDb29yZGluYXRlIG1hcEhvbW9nZW5lb3VzUG9pbnQoY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cCkKK3N0YXRpYyBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgbWFwSG9tb2dlbmVvdXNQb2ludChjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50M0Qm
IHApCiB7CiAgICAgZG91YmxlIHggPSBwLngoKTsKICAgICBkb3VibGUgeSA9IHAueSgpOwotICAg
IC8vIGltcGxpY2l0IGRlZmluaXRpb24gb2YgeiA9IDA7CisgICAgZG91YmxlIHogPSBwLnooKTsK
ICAgICAvLyBpbXBsaWNpdCBkZWZpbml0aW9uIG9mIHcgPSAxOwogCi0gICAgZG91YmxlIG91dFgg
PSB4ICogdHJhbnNmb3JtLm0xMSgpICsgeSAqIHRyYW5zZm9ybS5tMjEoKSArIHRyYW5zZm9ybS5t
NDEoKTsKLSAgICBkb3VibGUgb3V0WSA9IHggKiB0cmFuc2Zvcm0ubTEyKCkgKyB5ICogdHJhbnNm
b3JtLm0yMigpICsgdHJhbnNmb3JtLm00MigpOwotICAgIGRvdWJsZSBvdXRaID0geCAqIHRyYW5z
Zm9ybS5tMTMoKSArIHkgKiB0cmFuc2Zvcm0ubTIzKCkgKyB0cmFuc2Zvcm0ubTQzKCk7Ci0gICAg
ZG91YmxlIG91dFcgPSB4ICogdHJhbnNmb3JtLm0xNCgpICsgeSAqIHRyYW5zZm9ybS5tMjQoKSAr
IHRyYW5zZm9ybS5tNDQoKTsKKyAgICBkb3VibGUgb3V0WCA9IHggKiB0cmFuc2Zvcm0ubTExKCkg
KyB5ICogdHJhbnNmb3JtLm0yMSgpICsgeiAqIHRyYW5zZm9ybS5tMzEoKSArIHRyYW5zZm9ybS5t
NDEoKTsKKyAgICBkb3VibGUgb3V0WSA9IHggKiB0cmFuc2Zvcm0ubTEyKCkgKyB5ICogdHJhbnNm
b3JtLm0yMigpICsgeiAqIHRyYW5zZm9ybS5tMzIoKSArIHRyYW5zZm9ybS5tNDIoKTsKKyAgICBk
b3VibGUgb3V0WiA9IHggKiB0cmFuc2Zvcm0ubTEzKCkgKyB5ICogdHJhbnNmb3JtLm0yMygpICsg
eiAqIHRyYW5zZm9ybS5tMzMoKSArIHRyYW5zZm9ybS5tNDMoKTsKKyAgICBkb3VibGUgb3V0VyA9
IHggKiB0cmFuc2Zvcm0ubTE0KCkgKyB5ICogdHJhbnNmb3JtLm0yNCgpICsgeiAqIHRyYW5zZm9y
bS5tMzQoKSArIHRyYW5zZm9ybS5tNDQoKTsKIAogICAgIHJldHVybiBIb21vZ2VuZW91c0Nvb3Jk
aW5hdGUob3V0WCwgb3V0WSwgb3V0Wiwgb3V0Vyk7CiB9CkBAIC0yNzQsNiArMjc0LDUyIEBAIEZs
b2F0UXVhZCBDQ01hdGhVdGlsOjptYXBRdWFkKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsCiAgICAgcmV0dXJuIEZsb2F0UXVhZChoMS5jYXJ0ZXNpYW5Q
b2ludDJkKCksIGgyLmNhcnRlc2lhblBvaW50MmQoKSwgaDMuY2FydGVzaWFuUG9pbnQyZCgpLCBo
NC5jYXJ0ZXNpYW5Qb2ludDJkKCkpOwogfQogCitGbG9hdFBvaW50IENDTWF0aFV0aWw6Om1hcFBv
aW50KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UG9pbnQmIHAsIGJvb2wmIGNsaXBwZWQpCit7CisgICAgSG9tb2dlbmVvdXNDb29yZGluYXRlIGgg
PSBtYXBIb21vZ2VuZW91c1BvaW50KHRyYW5zZm9ybSwgcCk7CisKKyAgICBpZiAoaC53ID4gMCkg
eworICAgICAgICBjbGlwcGVkID0gZmFsc2U7CisgICAgICAgIHJldHVybiBoLmNhcnRlc2lhblBv
aW50MmQoKTsKKyAgICB9CisKKyAgICAvLyBUaGUgY2FydGVzaWFuIGNvb3JkaW5hdGVzIHdpbGwg
YmUgaW52YWxpZCBhZnRlciBkaXZpZGluZyBieSB3LgorICAgIGNsaXBwZWQgPSB0cnVlOworCisg
ICAgLy8gQXZvaWQgZGl2aWRpbmcgYnkgdyBpZiB3ID09IDAuCisgICAgaWYgKCFoLncpCisgICAg
ICAgIHJldHVybiBGbG9hdFBvaW50KCk7CisKKyAgICAvLyBUaGlzIHJldHVybiB2YWx1ZSB3aWxs
IGJlIGludmFsaWQgYmVjYXVzZSBjbGlwcGVkID09IHRydWUsIGJ1dCAoMSkgdXNlcnMgb2YgdGhp
cworICAgIC8vIGNvZGUgc2hvdWxkIGJlIGlnbm9yaW5nIHRoZSByZXR1cm4gdmFsdWUgd2hlbiBj
bGlwcGVkID09IHRydWUgYW55d2F5LCBhbmQgKDIpIHRoaXMKKyAgICAvLyBiZWhhdmlvciBpcyBt
b3JlIGNvbnNpc3RlbnQgd2l0aCBleGlzdGluZyBiZWhhdmlvciBvZiBXZWJLaXQgdHJhbnNmb3Jt
cyBpZiB0aGUgdXNlcgorICAgIC8vIHJlYWxseSBkb2VzIG5vdCBpZ25vcmUgdGhlIHJldHVybiB2
YWx1ZS4KKyAgICByZXR1cm4gaC5jYXJ0ZXNpYW5Qb2ludDJkKCk7Cit9CisKK0Zsb2F0UG9pbnQz
RCBDQ01hdGhVdGlsOjptYXBQb2ludChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50M0QmIHAsIGJvb2wmIGNsaXBwZWQpCit7CisgICAgSG9t
b2dlbmVvdXNDb29yZGluYXRlIGggPSBtYXBIb21vZ2VuZW91c1BvaW50KHRyYW5zZm9ybSwgcCk7
CisKKyAgICBpZiAoaC53ID4gMCkgeworICAgICAgICBjbGlwcGVkID0gZmFsc2U7CisgICAgICAg
IHJldHVybiBoLmNhcnRlc2lhblBvaW50M2QoKTsKKyAgICB9CisKKyAgICAvLyBUaGUgY2FydGVz
aWFuIGNvb3JkaW5hdGVzIHdpbGwgYmUgaW52YWxpZCBhZnRlciBkaXZpZGluZyBieSB3LgorICAg
IGNsaXBwZWQgPSB0cnVlOworCisgICAgLy8gQXZvaWQgZGl2aWRpbmcgYnkgdyBpZiB3ID09IDAu
CisgICAgaWYgKCFoLncpCisgICAgICAgIHJldHVybiBGbG9hdFBvaW50M0QoKTsKKworICAgIC8v
IFRoaXMgcmV0dXJuIHZhbHVlIHdpbGwgYmUgaW52YWxpZCBiZWNhdXNlIGNsaXBwZWQgPT0gdHJ1
ZSwgYnV0ICgxKSB1c2VycyBvZiB0aGlzCisgICAgLy8gY29kZSBzaG91bGQgYmUgaWdub3Jpbmcg
dGhlIHJldHVybiB2YWx1ZSB3aGVuIGNsaXBwZWQgPT0gdHJ1ZSBhbnl3YXksIGFuZCAoMikgdGhp
cworICAgIC8vIGJlaGF2aW9yIGlzIG1vcmUgY29uc2lzdGVudCB3aXRoIGV4aXN0aW5nIGJlaGF2
aW9yIG9mIFdlYktpdCB0cmFuc2Zvcm1zIGlmIHRoZSB1c2VyCisgICAgLy8gcmVhbGx5IGRvZXMg
bm90IGlnbm9yZSB0aGUgcmV0dXJuIHZhbHVlLgorICAgIHJldHVybiBoLmNhcnRlc2lhblBvaW50
M2QoKTsKK30KKwogRmxvYXRRdWFkIENDTWF0aFV0aWw6OnByb2plY3RRdWFkKGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UXVhZCYgcSwgYm9vbCYg
Y2xpcHBlZCkKIHsKICAgICBGbG9hdFF1YWQgcHJvamVjdGVkUXVhZDsKQEAgLTMxNCw1ICszNjAs
NCBAQCBGbG9hdFBvaW50IENDTWF0aFV0aWw6OnByb2plY3RQb2ludChjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjbwogICAgIHJldHVybiBoLmNhcnRlc2lhblBvaW50
MmQoKTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmgKaW5k
ZXggY2JjZWRhMGExNzQzZTE4NjMxZWRmZGE1NDI2Y2M1YWY1YmJjZjBhZC4uMDRlODUwZWJkNmI0
MjNjNTMzMzAwYWQ1YWRiZDUwMTExZDVlNTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuaApAQCAtMjYs
NiArMjYsNyBAQAogI2RlZmluZSBDQ01hdGhVdGlsX2gKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKKyNpbmNsdWRlICJGbG9hdFBvaW50M0QuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKQEAgLTYyLDYgKzYzLDE3IEBAIHN0cnVjdCBIb21v
Z2VuZW91c0Nvb3JkaW5hdGUgewogICAgICAgICByZXR1cm4gRmxvYXRQb2ludCh4ICogaW52Vywg
eSAqIGludlcpOwogICAgIH0KIAorICAgIEZsb2F0UG9pbnQzRCBjYXJ0ZXNpYW5Qb2ludDNkKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIGlmICh3ID09IDEpCisgICAgICAgICAgICByZXR1cm4gRmxv
YXRQb2ludDNEKHgsIHksIHopOworCisgICAgICAgIC8vIEZvciBub3csIGJlY2F1c2UgdGhpcyBj
b2RlIGlzIHVzZWQgcHJpdmF0ZWx5IG9ubHkgYnkgQ0NNYXRoVXRpbCwgaXQgc2hvdWxkIG5ldmVy
IGJlIGNhbGxlZCB3aGVuIHcgPT0gMCwgYW5kIHdlIGRvIG5vdCB5ZXQgbmVlZCB0byBoYW5kbGUg
dGhhdCBjYXNlLgorICAgICAgICBBU1NFUlQodyk7CisgICAgICAgIGRvdWJsZSBpbnZXID0gMS4w
IC8gdzsKKyAgICAgICAgcmV0dXJuIEZsb2F0UG9pbnQzRCh4ICogaW52VywgeSAqIGludlcsIHog
KiBpbnZXKTsKKyAgICB9CisKICAgICBkb3VibGUgeDsKICAgICBkb3VibGUgeTsKICAgICBkb3Vi
bGUgejsKQEAgLTk3LDYgKzEwOSw4IEBAIHB1YmxpYzoKICAgICAvLyBOT1RFOiBUaGVzZSBmdW5j
dGlvbnMgZG8gbm90IGRvIGNvcnJlY3QgY2xpcHBpbmcgYWdhaW5zdCB3ID0gMCBwbGFuZSwgYnV0
IHRoZXkKICAgICAvLyBjb3JyZWN0bHkgZGV0ZWN0IHRoZSBjbGlwcGVkIGNvbmRpdGlvbiB2aWEg
dGhlIGJvb2xlYW4gY2xpcHBlZC4KICAgICBzdGF0aWMgRmxvYXRRdWFkIG1hcFF1YWQoY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UXVhZCYsIGJvb2wm
IGNsaXBwZWQpOworICAgIHN0YXRpYyBGbG9hdFBvaW50IG1hcFBvaW50KGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFBvaW50JiwgYm9vbCYgY2xpcHBl
ZCk7CisgICAgc3RhdGljIEZsb2F0UG9pbnQzRCBtYXBQb2ludChjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRQb2ludDNEJiwgYm9vbCYgY2xpcHBlZCk7
CiAgICAgc3RhdGljIEZsb2F0UXVhZCBwcm9qZWN0UXVhZChjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRRdWFkJiwgYm9vbCYgY2xpcHBlZCk7CiAgICAg
c3RhdGljIEZsb2F0UG9pbnQgcHJvamVjdFBvaW50KGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFBvaW50JiwgYm9vbCYgY2xpcHBlZCk7CiB9Owo=
</data>
<flag name="review"
          id="164824"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>