<?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>62957</bug_id>
          
          <creation_ts>2011-06-19 18:40:43 -0700</creation_ts>
          <short_desc>Introduce templated compute length class in CSSStyleApplyProperty, and use to handle several CSS properties.</short_desc>
          <delta_ts>2011-07-14 18:29: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="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>macpherson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>423414</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-19 18:40:43 -0700</bug_when>
    <thetext>Introduce templated compute length class in CSSStyleApplyProperty, and use to handle several CSS properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423415</commentid>
    <comment_count>1</comment_count>
      <attachid>97729</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-19 18:44:22 -0700</bug_when>
    <thetext>Created attachment 97729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423418</commentid>
    <comment_count>2</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-19 18:48:20 -0700</bug_when>
    <thetext>Note that this patch causes negative border widths to clamp to zero, which is equivalent to the current behavior of ignoring negative values and using the default border width of zero, but avoids the conversions between short and unsigned short and additional checks for negative computed lengths that were present in the existing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423419</commentid>
    <comment_count>3</comment_count>
      <attachid>97731</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-19 18:50:19 -0700</bug_when>
    <thetext>Created attachment 97731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423430</commentid>
    <comment_count>4</comment_count>
      <attachid>97731</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-19 20:00:06 -0700</bug_when>
    <thetext>Comment on attachment 97731
Patch

Attachment 97731 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8911342</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423445</commentid>
    <comment_count>5</comment_count>
      <attachid>97738</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-19 20:45:25 -0700</bug_when>
    <thetext>Created attachment 97738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423447</commentid>
    <comment_count>6</comment_count>
      <attachid>97738</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-19 20:48:00 -0700</bug_when>
    <thetext>Comment on attachment 97738
Patch

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

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:395
&gt; +template &lt;typename T,
&gt; +          ComputeLengthNormal normalEnabled = NormalDisabled,
&gt; +          ComputeLengthThickness thicknessEnabled = ThicknessDisabled,
&gt; +          ComputeLengthSVGZoom svgZoomEnabled = SVGZoomDisabled&gt;

Really?  There isn&apos;t a better way to do this than 3 independent bools?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423450</commentid>
    <comment_count>7</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-19 20:52:27 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 97738 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=97738&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:395
&gt; &gt; +template &lt;typename T,
&gt; &gt; +          ComputeLengthNormal normalEnabled = NormalDisabled,
&gt; &gt; +          ComputeLengthThickness thicknessEnabled = ThicknessDisabled,
&gt; &gt; +          ComputeLengthSVGZoom svgZoomEnabled = SVGZoomDisabled&gt;
&gt; 
&gt; Really?  There isn&apos;t a better way to do this than 3 independent bools?

Well, feel free to suggest one. I think it makes very good sense to do it that way, since they are orthogonal properties that you might want to switch on and off for individual CSS properties depending on what the spec allows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>429124</commentid>
    <comment_count>8</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-28 14:03:23 -0700</bug_when>
    <thetext>Ping. Patch still applies and builds cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436855</commentid>
    <comment_count>9</comment_count>
      <attachid>97738</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-13 19:07:55 -0700</bug_when>
    <thetext>Comment on attachment 97738
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        Add computeLenght function that returns unsigned short.

computeLength</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436919</commentid>
    <comment_count>10</comment_count>
      <attachid>100765</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-07-13 21:23:28 -0700</bug_when>
    <thetext>Created attachment 100765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437077</commentid>
    <comment_count>11</comment_count>
      <attachid>100765</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-07-14 07:33:40 -0700</bug_when>
    <thetext>Comment on attachment 100765
Patch

you can just use webkit-patch land-safely next time. It will transfer the r+ from the previous patch and cq+ the new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437454</commentid>
    <comment_count>12</comment_count>
      <attachid>100765</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-14 18:29:09 -0700</bug_when>
    <thetext>Comment on attachment 100765
Patch

Clearing flags on attachment: 100765

Committed r91038: &lt;http://trac.webkit.org/changeset/91038&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437456</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-14 18:29:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97729</attachid>
            <date>2011-06-19 18:44:22 -0700</date>
            <delta_ts>2011-06-19 18:50:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62957-20110620114419.patch</filename>
            <type>text/plain</type>
            <size>19279</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MjIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDYtMTkgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgdGVtcGxhdGVkIGNvbXB1dGUg
bGVuZ3RoIGNsYXNzIGluIENTU1N0eWxlQXBwbHlQcm9wZXJ0eSwgYW5kIHVzZSB0byBoYW5kbGUg
c2V2ZXJhbCBDU1MgcHJvcGVydGllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyOTU3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgpOgorICAgICAgICBBZGQgY29tcHV0ZUxl
bmdodCBmdW5jdGlvbiB0aGF0IHJldHVybnMgdW5zaWduZWQgc2hvcnQuCisgICAgICAgICogY3Nz
L0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3Bl
cnR5Q29tcHV0ZUxlbmd0aDo6QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGgpOgorICAgICAgICBB
ZGRlZCBjbGFzcyB0byBoYW5kbGUgY29tcHV0ZUxlbmd0aCBiYXNlZCBwcm9wZXJ0aWVzLgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcGVy
dHkpOgorICAgICAgICBJbml0aWFsaXplIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoIGZvciBh
cHByb3ByaWF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnVzZVNWR1pvb21SdWxlcyk6
CisgICAgICAgIE1ha2UgdGhpcyBhIHB1YmxpYyBtZW1iZXIgZnVuY3Rpb24gaW5zdGVhZCBvZiBh
IHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIFJlbW92ZWQgY29kZSBub3cgaW1wbGVtZW50
ZWQgaW4gQ1NTU3R5bGVBcHBseVByb3BlcnR5LgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6c2V0Rm9udFNpemUpOgorICAgICAgICBVc2UgbmV3IHVzZVNWR1pvb21SdWxlcyBm
dW5jdGlvbi4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICBBZGQg
aW50ZXJmYWNlIGZvciB1c2VTVkdab29tUnVsZXMuCisKIDIwMTEtMDYtMTkgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHJldmlzaW9uIDg5
MDk4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcxLDYgKzI3MSwxMSBAQCB0ZW1wbGF0ZTw+IHNob3J0IENTU1ByaW1pdGl2
ZVZhbHVlOjpjb21wCiAgICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxzaG9y
dCwgU0hSVF9NQVgsIFNIUlRfTUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5
bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKSk7CiB9CiAKK3RlbXBsYXRlPD4gdW5z
aWduZWQgc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgoUmVuZGVyU3R5bGUq
IHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciwgYm9vbCBj
b21wdXRpbmdGb250U2l6ZSkKK3sKKyAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJz
aW9uPHVuc2lnbmVkIHNob3J0LCBVU0hSVF9NQVgsIDA+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5
bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpKTsKK30KKwogdGVt
cGxhdGU8PiBmbG9hdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHls
ZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29s
IGNvbXB1dGluZ0ZvbnRTaXplKQogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oY29t
cHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdG
b250U2l6ZSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9w
ZXJ0eS5jcHAJKHJldmlzaW9uIDg5MDk4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
QXBwbHlQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw3ICsxODksNiBAQCBwcml2
YXRlOgogICAgIEluaXRpYWxGdW5jdGlvbiBtX2luaXRpYWw7CiB9OwogCi0vLyBDU1NQcm9wZXJ0
eURpcmVjdGlvbgogY2xhc3MgQXBwbHlQcm9wZXJ0eURpcmVjdGlvbiA6IHB1YmxpYyBBcHBseVBy
b3BlcnR5RGVmYXVsdDxUZXh0RGlyZWN0aW9uPiB7CiBwdWJsaWM6CiAgICAgQXBwbHlQcm9wZXJ0
eURpcmVjdGlvbihHZXR0ZXJGdW5jdGlvbiBnZXR0ZXIsIFNldHRlckZ1bmN0aW9uIHNldHRlciwg
SW5pdGlhbEZ1bmN0aW9uIGluaXRpYWwpCkBAIC0zODcsNDIgKzM4Niw0NyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCAoQ1NTU3R5bGVTZWxlY3Rvcjo6Km1fbWFwRmlsbCkoQ1NTUHJvcGVydHlJRCwg
RmlsbExheWVyKiwgQ1NTVmFsdWUqKTsKIH07CiAKLWNsYXNzIEFwcGx5UHJvcGVydHlXaWR0aCA6
IHB1YmxpYyBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8dW5zaWduZWQgc2hvcnQ+IHsKK2VudW0g
Q29tcHV0ZUxlbmd0aE5vcm1hbCB7Tm9ybWFsRGlzYWJsZWQgPSAwLCBOb3JtYWxFbmFibGVkfTsK
K2VudW0gQ29tcHV0ZUxlbmd0aFRoaWNrbmVzcyB7VGhpY2tuZXNzRGlzYWJsZWQgPSAwLCBUaGlj
a25lc3NFbmFibGVkfTsKK2VudW0gQ29tcHV0ZUxlbmd0aFNWR1pvb20ge1NWR1pvb21EaXNhYmxl
ZCA9IDAsIFNWR1pvb21FbmFibGVkfTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBULAorICAgICAgICAg
IENvbXB1dGVMZW5ndGhOb3JtYWwgbm9ybWFsRW5hYmxlZCA9IE5vcm1hbERpc2FibGVkLAorICAg
ICAgICAgIENvbXB1dGVMZW5ndGhUaGlja25lc3MgdGhpY2tuZXNzRW5hYmxlZCA9IFRoaWNrbmVz
c0Rpc2FibGVkLAorICAgICAgICAgIENvbXB1dGVMZW5ndGhTVkdab29tIHN2Z1pvb21FbmFibGVk
ID0gU1ZHWm9vbURpc2FibGVkPgorY2xhc3MgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGggOiBw
dWJsaWMgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPFQ+IHsKIHB1YmxpYzoKLSAgICBBcHBseVBy
b3BlcnR5V2lkdGgoR2V0dGVyRnVuY3Rpb24gZ2V0dGVyLCBTZXR0ZXJGdW5jdGlvbiBzZXR0ZXIs
IEluaXRpYWxGdW5jdGlvbiBpbml0aWFsKQotICAgICAgICA6IEFwcGx5UHJvcGVydHlEZWZhdWx0
QmFzZTx1bnNpZ25lZCBzaG9ydD4oZ2V0dGVyLCBzZXR0ZXIsIGluaXRpYWwpCisgICAgQXBwbHlQ
cm9wZXJ0eUNvbXB1dGVMZW5ndGgodHlwZW5hbWUgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPFQ+
OjpHZXR0ZXJGdW5jdGlvbiBnZXR0ZXIsIHR5cGVuYW1lIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFz
ZTxUPjo6U2V0dGVyRnVuY3Rpb24gc2V0dGVyLCB0eXBlbmFtZSBBcHBseVByb3BlcnR5RGVmYXVs
dEJhc2U8VD46OkluaXRpYWxGdW5jdGlvbiBpbml0aWFsKQorICAgICAgICA6IEFwcGx5UHJvcGVy
dHlEZWZhdWx0QmFzZTxUPihnZXR0ZXIsIHNldHRlciwgaW5pdGlhbCkKICAgICB7CiAgICAgfQog
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpIGNvbnN0CiAgICAgeworICAgICAgICAvLyBub3Rl
OiBDU1NQcm9wZXJ0eUxldHRlci9Xb3JkU3BhY2luZyByaWdodCBub3cgc2V0cyB0byB6ZXJvIGlm
IGl0J3Mgbm90IGEgcHJpbWl0aXZlIHZhbHVlIGZvciBzb21lIHJlYXNvbi4uLgogICAgICAgICBp
ZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7Ci0gICAgICAgIHNob3J0IHdpZHRoOwotICAgICAgICBz
d2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNhc2UgQ1NTVmFs
dWVUaGluOgotICAgICAgICAgICAgd2lkdGggPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ1NTVmFsdWVNZWRpdW06Ci0gICAgICAgICAgICB3aWR0aCA9IDM7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZVRoaWNrOgotICAgICAgICAgICAgd2lk
dGggPSA1OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVJbnZhbGlk
OgotICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxzaG9y
dD4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCksIHNlbGVj
dG9yLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwotICAgICAgICAgICAgLy8gQ1NTMiBib3gg
bW9kZWwgZG9lcyBub3QgYWxsb3cgbmVnYXRpdmUgbGVuZ3RocyBmb3IgYm9yZGVycy4KLSAgICAg
ICAgICAgIGlmICh3aWR0aCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaW50IGlkZW50ID0gcHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCk7CisgICAgICAgIFQgbGVu
Z3RoOworICAgICAgICBpZiAobm9ybWFsRW5hYmxlZCAmJiBpZGVudCA9PSBDU1NWYWx1ZU5vcm1h
bCkgeworICAgICAgICAgICAgbGVuZ3RoID0gMDsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlja25l
c3NFbmFibGVkICYmIGlkZW50ID09IENTU1ZhbHVlVGhpbikgeworICAgICAgICAgICAgbGVuZ3Ro
ID0gMTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlja25lc3NFbmFibGVkICYmIGlkZW50ID09IENT
U1ZhbHVlTWVkaXVtKSB7CisgICAgICAgICAgICBsZW5ndGggPSAzOworICAgICAgICB9IGVsc2Ug
aWYgKHRoaWNrbmVzc0VuYWJsZWQgJiYgaWRlbnQgPT0gQ1NTVmFsdWVUaGljaykgeworICAgICAg
ICAgICAgbGVuZ3RoID0gNTsKKyAgICAgICAgfSBlbHNlIGlmIChpZGVudCA9PSBDU1NWYWx1ZUlu
dmFsaWQpIHsKKyAgICAgICAgICAgIGZsb2F0IHpvb20gPSAoc3ZnWm9vbUVuYWJsZWQgJiYgc2Vs
ZWN0b3ItPnVzZVNWR1pvb21SdWxlcygpKSA/IDEuMGYgOiBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZm
ZWN0aXZlWm9vbSgpOworICAgICAgICAgICAgbGVuZ3RoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGg8VD4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxl
KCksIHpvb20pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KIAotICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwg
d2lkdGgpOworICAgICAgICBzZXRWYWx1ZShzZWxlY3Rvci0+c3R5bGUoKSwgbGVuZ3RoKTsKICAg
ICB9CiB9OwogCkBAIC01ODIsMTIgKzU4NiwxMiBAQCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNT
U1N0eWxlQXBwbHlQcm9wCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tU3R5bGUsIG5ldyBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5bGU+KCZSZW5k
ZXJTdHlsZTo6Ym9yZGVyQm90dG9tU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9t
U3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0eWxlKSk7CiAgICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBuZXcgQXBwbHlQcm9wZXJ0eURl
ZmF1bHQ8RUJvcmRlclN0eWxlPigmUmVuZGVyU3R5bGU6OmJvcmRlckxlZnRTdHlsZSwgJlJlbmRl
clN0eWxlOjpzZXRCb3JkZXJMZWZ0U3R5bGUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlclN0
eWxlKSk7CiAKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0
aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFdpZHRoLCAm
UmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3Jk
ZXJXaWR0aCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
V2lkdGgsIG5ldyBBcHBseVByb3BlcnR5V2lkdGgoJlJlbmRlclN0eWxlOjpib3JkZXJSaWdodFdp
ZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbEJvcmRlcldpZHRoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tV2lkdGgsIG5ldyBBcHBseVByb3BlcnR5V2lkdGgoJlJlbmRlclN0eWxlOjpib3Jk
ZXJCb3R0b21XaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21XaWR0aCwgJlJlbmRl
clN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIG5ldyBBcHBseVByb3BlcnR5V2lkdGgoJlJlbmRlclN0
eWxlOjpib3JkZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFdpZHRoLCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVy
U3R5bGU6Om91dGxpbmVXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lV2lkdGgsICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBuZXcgQXBwbHlQcm9wZXJ0eVdpZHRoKCZS
ZW5kZXJTdHlsZTo6Y29sdW1uUnVsZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtblJ1bGVX
aWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgpKTsKKyAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlDb21w
dXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxl
ZD4oJlJlbmRlclN0eWxlOjpib3JkZXJUb3BXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJU
b3BXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgpKTsKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBuZXcgQXBwbHlQcm9wZXJ0
eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NF
bmFibGVkPigmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0
Qm9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgpKTsKKyAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgbmV3IEFw
cGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCBOb3JtYWxEaXNhYmxlZCwg
VGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21XaWR0aCwgJlJlbmRl
clN0eWxlOjpzZXRCb3JkZXJCb3R0b21XaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVy
V2lkdGgpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lk
dGgsIG5ldyBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgTm9ybWFs
RGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6Ym9yZGVyTGVmdFdpZHRo
LCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFs
Qm9yZGVyV2lkdGgpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdXRsaW5l
V2lkdGgsIG5ldyBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgTm9y
bWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6b3V0bGluZVdpZHRo
LCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9y
ZGVyV2lkdGgpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1
bW5SdWxlV2lkdGgsIG5ldyBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9y
dCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6Y29sdW1u
UnVsZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldENvbHVtblJ1bGVXaWR0aCwgJlJlbmRlclN0eWxl
Ojppbml0aWFsQm9yZGVyV2lkdGgpKTsKIAogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eUJvcmRlclRvcCwgbmV3IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZT4o
cHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IpLCBwcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSksIHByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJvcmRlclRvcFdpZHRoKSkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0LCBuZXcgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlPihwcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yKSwgcHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSksIHByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0V2lkdGgpKSk7CkBAIC02MDYsNiArNjEwLDEzIEBAIENTU1N0eWxlQXBwbHlQ
cm9wZXJ0eTo6Q1NTU3R5bGVBcHBseVByb3AKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlCb3JkZXJSYWRpdXMsIG5ldyBBcHBseVByb3BlcnR5RXhwYW5kaW5nPEV4cGFuZFZhbHVl
Pihwcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzKSwgcHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMpLCBwcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzKSwgcHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMpKSk7CiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1
cyk7CiAKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jp
em9udGFsU3BhY2luZywgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHNob3J0PigmUmVu
ZGVyU3R5bGU6Omhvcml6b250YWxCb3JkZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OnNldEhvcml6
b250YWxCb3JkZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxIb3Jpem9udGFsQm9yZGVy
U3BhY2luZykpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clZlcnRpY2FsU3BhY2luZywgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHNob3J0Pigm
UmVuZGVyU3R5bGU6OnZlcnRpY2FsQm9yZGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjpzZXRWZXJ0
aWNhbEJvcmRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFZlcnRpY2FsQm9yZGVyU3Bh
Y2luZykpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcs
IG5ldyBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWU+KHByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nKSwgcHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nKSkpOworCisgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgbmV3IEFwcGx5UHJvcGVy
dHlDb21wdXRlTGVuZ3RoPGludCwgTm9ybWFsRW5hYmxlZCwgVGhpY2tuZXNzRGlzYWJsZWQsIFNW
R1pvb21FbmFibGVkPigmUmVuZGVyU3R5bGU6OmxldHRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6
c2V0TGV0dGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjppbml0aWFsTGV0dGVyV29yZFNwYWNpbmcp
KTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgbmV3IEFw
cGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPGludCwgTm9ybWFsRW5hYmxlZCwgVGhpY2tuZXNzRGlz
YWJsZWQsIFNWR1pvb21FbmFibGVkPigmUmVuZGVyU3R5bGU6OndvcmRTcGFjaW5nLCAmUmVuZGVy
U3R5bGU6OnNldFdvcmRTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMZXR0ZXJXb3JkU3Bh
Y2luZykpOworCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Rm9udFN0eWxlLCBu
ZXcgQXBwbHlQcm9wZXJ0eUZvbnQ8Rm9udEl0YWxpYz4oJkZvbnREZXNjcmlwdGlvbjo6aXRhbGlj
LCAmRm9udERlc2NyaXB0aW9uOjpzZXRJdGFsaWMsIEZvbnRJdGFsaWNPZmYpKTsKICAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250VmFyaWFudCwgbmV3IEFwcGx5UHJvcGVydHlG
b250PEZvbnRTbWFsbENhcHM+KCZGb250RGVzY3JpcHRpb246OnNtYWxsQ2FwcywgJkZvbnREZXNj
cmlwdGlvbjo6c2V0U21hbGxDYXBzLCBGb250U21hbGxDYXBzT2ZmKSk7CiAgICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5VGV4dFJlbmRlcmluZywgbmV3IEFwcGx5UHJvcGVydHlGb250
PFRleHRSZW5kZXJpbmdNb2RlPigmRm9udERlc2NyaXB0aW9uOjp0ZXh0UmVuZGVyaW5nTW9kZSwg
JkZvbnREZXNjcmlwdGlvbjo6c2V0VGV4dFJlbmRlcmluZ01vZGUsIEF1dG9UZXh0UmVuZGVyaW5n
KSk7CkBAIC02MTYsNyArNjI3LDYgQEAgQ1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHlsZUFw
cGx5UHJvcAogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwg
bmV3IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8RXhwYW5kVmFsdWU+KG5ldyBBcHBseVByb3BlcnR5
RGVmYXVsdDxPdXRsaW5lSXNBdXRvPigmUmVuZGVyU3R5bGU6Om91dGxpbmVTdHlsZUlzQXV0bywg
JlJlbmRlclN0eWxlOjpzZXRPdXRsaW5lU3R5bGVJc0F1dG8sICZSZW5kZXJTdHlsZTo6aW5pdGlh
bE91dGxpbmVTdHlsZUlzQXV0byksIG5ldyBBcHBseVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5
bGU+KCZSZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxlLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVT
dHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUpKSk7CiAgICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbG9y
PEluaGVyaXRGcm9tUGFyZW50PigmUmVuZGVyU3R5bGU6Om91dGxpbmVDb2xvciwgJlJlbmRlclN0
eWxlOjpzZXRPdXRsaW5lQ29sb3IsICZSZW5kZXJTdHlsZTo6Y29sb3IpKTsKIAotCiAgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBuZXcgQXBwbHlQcm9wZXJ0eURl
ZmF1bHQ8RU92ZXJmbG93PigmUmVuZGVyU3R5bGU6Om92ZXJmbG93WCwgJlJlbmRlclN0eWxlOjpz
ZXRPdmVyZmxvd1gsICZSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJmbG93WCkpOwogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU92ZXJmbG93WSwgbmV3IEFwcGx5UHJvcGVydHlEZWZh
dWx0PEVPdmVyZmxvdz4oJlJlbmRlclN0eWxlOjpvdmVyZmxvd1ksICZSZW5kZXJTdHlsZTo6c2V0
T3ZlcmZsb3dZLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdmVyZmxvd1kpKTsKICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdmVyZmxvdywgbmV3IEFwcGx5UHJvcGVydHlFeHBhbmRp
bmc8RXhwYW5kVmFsdWU+KHByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU92ZXJmbG93WCksIHBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU92ZXJmbG93WSkpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDg5MDk4KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjQzLDkg
KzM2NDMsOSBAQCBpbmxpbmUgU1ZHRGlzcGxheVByb3BlcnR5R3VhcmQ6On5TVkdEaXNwCiAvLyB3
aWR0aC9oZWlnaHQvYm9yZGVyL3BhZGRpbmcvLi4uIGZyb20gdGhlIFJlbmRlclN0eWxlIC0+IGZv
ciBTVkcgdGhlc2UgdmFsdWVzIHdvdWxkIG5ldmVyIHNjYWxlLAogLy8gaWYgd2UnZCBwYXNzIGEg
MS4wIHpvb20gZmFjdG9yIGV2ZXJ5aHdlcmUuIFNvIHdlIG9ubHkgcGFzcyBhIHpvb20gZmFjdG9y
IG9mIDEuMCBmb3Igc3BlY2lmaWMKIC8vIHByb3BlcnRpZXMgdGhhdCBhcmUgTk9UIGFsbG93ZWQg
dG8gc2NhbGUgd2l0aGluIGEgem9vbWVkIFNWRyBkb2N1bWVudCAobGV0dGVyL3dvcmQtc3BhY2lu
Zy9mb250LXNpemUpLgotc3RhdGljIGlubGluZSBib29sIHVzZVNWR1pvb21SdWxlcyhjb25zdCBF
bGVtZW50KiBlKQorYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjp1c2VTVkdab29tUnVsZXMoKQogewot
ICAgIHJldHVybiBlICYmIGUtPmlzU1ZHRWxlbWVudCgpOworICAgIHJldHVybiBtX2VsZW1lbnQg
JiYgbV9lbGVtZW50LT5pc1NWR0VsZW1lbnQoKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQpAQCAtMzc1NiwzMyArMzc1
Niw2IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNl
IENTU1Byb3BlcnR5V2hpdGVTcGFjZToKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUxfQU5EX1BSSU1JVElWRSh3aGl0ZVNwYWNlLCBXaGl0ZVNwYWNlKQogICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmc6IHsKLSAgICAgICAgaWYgKGlzSW5o
ZXJpdCkgewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmco
bV9wYXJlbnRTdHlsZS0+aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoKSk7Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcobV9wYXJlbnRTdHlsZS0+dmVydGljYWxC
b3JkZXJTcGFjaW5nKCkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkg
ewotICAgICAgICAgICAgbV9zdHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoMCk7Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoMCk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySG9yaXpvbnRhbFNwYWNpbmc6IHsKLSAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwoaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsIEhvcml6b250YWxCb3JkZXJTcGFjaW5nKQotICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBz
aG9ydCBzcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8c2hvcnQ+KHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgIG1fc3R5bGUtPnNl
dEhvcml6b250YWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmc6IHsKLSAg
ICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodmVydGljYWxCb3JkZXJTcGFjaW5nLCBW
ZXJ0aWNhbEJvcmRlclNwYWNpbmcpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIHNob3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+
Y29tcHV0ZUxlbmd0aDxzaG9ydD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFj
dG9yKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlDdXJzb3I6CiAg
ICAgICAgIGlmIChpc0luaGVyaXQpIHsKICAgICAgICAgICAgIG1fc3R5bGUtPnNldEN1cnNvciht
X3BhcmVudFN0eWxlLT5jdXJzb3IoKSk7CkBAIC0zODI4LDQxICszODAxLDYgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICBtX3N0eWxlLT5zZXRMaXN0
U3R5bGVJbWFnZShzdHlsZUltYWdlKENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsIHZhbHVlKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNp
bmc6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgotICAgIHsKLSAgICAgICAgaWYg
KGlzSW5oZXJpdCkgewotICAgICAgICAgICAgSEFORExFX0lOSEVSSVRfQ09ORChDU1NQcm9wZXJ0
eUxldHRlclNwYWNpbmcsIGxldHRlclNwYWNpbmcsIExldHRlclNwYWNpbmcpCi0gICAgICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5V29yZFNwYWNpbmcsIHdvcmRTcGFjaW5n
LCBXb3JkU3BhY2luZykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIGlmIChpc0luaXRpYWwpIHsKLSAgICAgICAgICAgIEhBTkRMRV9JTklUSUFMX0NPTkRfV0lU
SF9WQUxVRShDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcsIExldHRlclNwYWNpbmcsIExldHRlcldv
cmRTcGFjaW5nKQotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZBTFVFKENT
U1Byb3BlcnR5V29yZFNwYWNpbmcsIFdvcmRTcGFjaW5nLCBMZXR0ZXJXb3JkU3BhY2luZykKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaW50IHdpZHRo
ID0gMDsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlICYmIHByaW1pdGl2ZVZhbHVlLT5nZXRJ
ZGVudCgpID09IENTU1ZhbHVlTm9ybWFsKSB7Ci0gICAgICAgICAgICB3aWR0aCA9IDA7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHVzZVNWR1pvb21SdWxl
cyhtX2VsZW1lbnQpID8gMS4wZiA6IHpvb21GYWN0b3IpOwotICAgICAgICB9Ci0gICAgICAgIHN3
aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6Ci0gICAg
ICAgICAgICBtX3N0eWxlLT5zZXRMZXR0ZXJTcGFjaW5nKHdpZHRoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6Ci0gICAgICAgICAgICBt
X3N0eWxlLT5zZXRXb3JkU3BhY2luZyh3aWR0aCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIC8vICMjIyBuZWVkcyB0aGUgZGVmaW5pdGlvbnMgaW4gcmVuZGVyc3R5bGUKLSAgICAg
ICAgZGVmYXVsdDogYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FO
RF9JTklUSUFMX0FORF9QUklNSVRJVkUod29yZEJyZWFrLCBXb3JkQnJlYWspCiAgICAgICAgIHJl
dHVybjsKQEAgLTQ0NzQsNyArNDQxMiw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eShpbnQKICAgICAgICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0VXNlUHJpbnRl
ckZvbnQobV9jaGVja2VyLm1fZG9jdW1lbnQtPnByaW50aW5nKCkpOwogICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAvLyBIYW5kbGUgdGhlIHpvb20gZmFjdG9yLgotICAgICAgICAgICAgICAg
IGZvbnREZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZ2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNp
ZmllZFNpemUobV9jaGVja2VyLm1fZG9jdW1lbnQsIG1fc3R5bGUuZ2V0KCksIGZvbnREZXNjcmlw
dGlvbi5pc0Fic29sdXRlU2l6ZSgpLCBmb250RGVzY3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgpLCB1
c2VTVkdab29tUnVsZXMobV9lbGVtZW50KSkpOworICAgICAgICAgICAgICAgIGZvbnREZXNjcmlw
dGlvbi5zZXRDb21wdXRlZFNpemUoZ2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUobV9j
aGVja2VyLm1fZG9jdW1lbnQsIG1fc3R5bGUuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5pc0Fic29s
dXRlU2l6ZSgpLCBmb250RGVzY3JpcHRpb24uc3BlY2lmaWVkU2l6ZSgpLCB1c2VTVkdab29tUnVs
ZXMoKSkpOwogICAgICAgICAgICAgICAgIGlmIChtX3N0eWxlLT5zZXRGb250RGVzY3JpcHRpb24o
Zm9udERlc2NyaXB0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgbV9mb250RGlydHkgPSB0cnVl
OwogICAgICAgICAgICAgfQpAQCAtNTM0Nyw2ICs1Mjg1LDExIEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmln
aHRSYWRpdXM6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXM6CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJI
b3Jpem9udGFsU3BhY2luZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGlj
YWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOgorICAgIGNhc2Ug
Q1NTUHJvcGVydHlXb3JkU3BhY2luZzoKICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFN0eWxlOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250VmFyaWFudDoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4
dFJlbmRlcmluZzoKQEAgLTYxMTEsOSArNjA1NCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
Y2hlY2tGb3JHZW5lcmljRmEKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c2V0Rm9udFNpemUoRm9u
dERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24sIGZsb2F0IHNpemUpCiB7CiAgICAgZm9udERl
c2NyaXB0aW9uLnNldFNwZWNpZmllZFNpemUoc2l6ZSk7Ci0KLSAgICBib29sIHVzZVNWR1pvb21S
dWxlcyA9IG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOwotICAgIGZvbnRE
ZXNjcmlwdGlvbi5zZXRDb21wdXRlZFNpemUoZ2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNp
emUobV9jaGVja2VyLm1fZG9jdW1lbnQsIG1fc3R5bGUuZ2V0KCksIGZvbnREZXNjcmlwdGlvbi5p
c0Fic29sdXRlU2l6ZSgpLCBzaXplLCB1c2VTVkdab29tUnVsZXMpKTsgCisgICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZSht
X2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJz
b2x1dGVTaXplKCksIHNpemUsIHVzZVNWR1pvb21SdWxlcygpKSk7CiB9CiAKIGZsb2F0IENTU1N0
eWxlU2VsZWN0b3I6OmdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKERvY3VtZW50KiBk
b2N1bWVudCwgUmVuZGVyU3R5bGUqIHN0eWxlLCBib29sIGlzQWJzb2x1dGVTaXplLCBmbG9hdCBz
cGVjaWZpZWRTaXplLCBib29sIHVzZVNWR1pvb21SdWxlcykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaAkocmV2aXNpb24gODkwOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsNyArMTY2LDEwIEBA
IHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIHNldEZvbnRTaXplKEZvbnREZXNj
cmlwdGlvbiYsIGZsb2F0IHNpemUpOwogICAgICAgICBzdGF0aWMgZmxvYXQgZ2V0Q29tcHV0ZWRT
aXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQqLCBSZW5kZXJTdHlsZSosIGJvb2wgaXNBYnNv
bHV0ZVNpemUsIGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKTsKKwog
ICAgIHB1YmxpYzoKKyAgICAgICAgYm9vbCB1c2VTVkdab29tUnVsZXMoKTsKKwogICAgICAgICBD
b2xvciBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSopIGNvbnN0
OwogCiAgICAgICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3Ry
aW5nJikgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97731</attachid>
            <date>2011-06-19 18:50:19 -0700</date>
            <delta_ts>2011-06-19 20:45:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62957-20110620115016.patch</filename>
            <type>text/plain</type>
            <size>19290</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MjIzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDYtMTkgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgdGVtcGxhdGVkIGNvbXB1dGUg
bGVuZ3RoIGNsYXNzIGluIENTU1N0eWxlQXBwbHlQcm9wZXJ0eSwgYW5kIHVzZSB0byBoYW5kbGUg
c2V2ZXJhbCBDU1MgcHJvcGVydGllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyOTU3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC8gcmVmYWN0b3Jp
bmcgb25seS4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aCk6CisgICAgICAgIEFk
ZCBjb21wdXRlTGVuZ2h0IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB1bnNpZ25lZCBzaG9ydC4KKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoOjpBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aCk6
CisgICAgICAgIEFkZGVkIGNsYXNzIHRvIGhhbmRsZSBjb21wdXRlTGVuZ3RoIGJhc2VkIHByb3Bl
cnRpZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxl
QXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIEluaXRpYWxpemUgQXBwbHlQcm9wZXJ0eUNvbXB1dGVM
ZW5ndGggZm9yIGFwcHJvcHJpYXRlIHByb3BlcnRpZXMuCisgICAgICAgICogY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6dXNlU1ZH
Wm9vbVJ1bGVzKToKKyAgICAgICAgTWFrZSB0aGlzIGEgcHVibGljIG1lbWJlciBmdW5jdGlvbiBp
bnN0ZWFkIG9mIGEgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgUmVtb3ZlZCBjb2RlIG5v
dyBpbXBsZW1lbnRlZCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuCisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjpzZXRGb250U2l6ZSk6CisgICAgICAgIFVzZSBuZXcgdXNlU1ZH
Wm9vbVJ1bGVzIGZ1bmN0aW9uLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6Cisg
ICAgICAgIEFkZCBpbnRlcmZhY2UgZm9yIHVzZVNWR1pvb21SdWxlcy4KKwogMjAxMS0wNi0xOSAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAko
cmV2aXNpb24gODkwOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsNiArMjcxLDExIEBAIHRlbXBsYXRlPD4gc2hvcnQg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXAKICAgICByZXR1cm4gcm91bmRGb3JJbXByZWNpc2VDb252
ZXJzaW9uPHNob3J0LCBTSFJUX01BWCwgU0hSVF9NSU4+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5
bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpKTsKIH0KIAordGVt
cGxhdGU8PiB1bnNpZ25lZCBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBs
aWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQoreworICAgIHJldHVybiByb3VuZEZvckltcHJl
Y2lzZUNvbnZlcnNpb248dW5zaWduZWQgc2hvcnQsIFVTSFJUX01BWCwgMD4oY29tcHV0ZUxlbmd0
aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6ZSkp
OworfQorCiB0ZW1wbGF0ZTw+IGZsb2F0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3Ro
KFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRp
cGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0Pihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIs
IGNvbXB1dGluZ0ZvbnRTaXplKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVB
cHBseVByb3BlcnR5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVBcHBseVByb3BlcnR5LmNwcAkocmV2aXNpb24gODkwOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDcgKzE4
OSw2IEBAIHByaXZhdGU6CiAgICAgSW5pdGlhbEZ1bmN0aW9uIG1faW5pdGlhbDsKIH07CiAKLS8v
IENTU1Byb3BlcnR5RGlyZWN0aW9uCiBjbGFzcyBBcHBseVByb3BlcnR5RGlyZWN0aW9uIDogcHVi
bGljIEFwcGx5UHJvcGVydHlEZWZhdWx0PFRleHREaXJlY3Rpb24+IHsKIHB1YmxpYzoKICAgICBB
cHBseVByb3BlcnR5RGlyZWN0aW9uKEdldHRlckZ1bmN0aW9uIGdldHRlciwgU2V0dGVyRnVuY3Rp
b24gc2V0dGVyLCBJbml0aWFsRnVuY3Rpb24gaW5pdGlhbCkKQEAgLTM4Nyw0MiArMzg2LDQ3IEBA
IHByb3RlY3RlZDoKICAgICB2b2lkIChDU1NTdHlsZVNlbGVjdG9yOjoqbV9tYXBGaWxsKShDU1NQ
cm9wZXJ0eUlELCBGaWxsTGF5ZXIqLCBDU1NWYWx1ZSopOwogfTsKIAotY2xhc3MgQXBwbHlQcm9w
ZXJ0eVdpZHRoIDogcHVibGljIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTx1bnNpZ25lZCBzaG9y
dD4geworZW51bSBDb21wdXRlTGVuZ3RoTm9ybWFsIHtOb3JtYWxEaXNhYmxlZCA9IDAsIE5vcm1h
bEVuYWJsZWR9OworZW51bSBDb21wdXRlTGVuZ3RoVGhpY2tuZXNzIHtUaGlja25lc3NEaXNhYmxl
ZCA9IDAsIFRoaWNrbmVzc0VuYWJsZWR9OworZW51bSBDb21wdXRlTGVuZ3RoU1ZHWm9vbSB7U1ZH
Wm9vbURpc2FibGVkID0gMCwgU1ZHWm9vbUVuYWJsZWR9OwordGVtcGxhdGUgPHR5cGVuYW1lIFQs
CisgICAgICAgICAgQ29tcHV0ZUxlbmd0aE5vcm1hbCBub3JtYWxFbmFibGVkID0gTm9ybWFsRGlz
YWJsZWQsCisgICAgICAgICAgQ29tcHV0ZUxlbmd0aFRoaWNrbmVzcyB0aGlja25lc3NFbmFibGVk
ID0gVGhpY2tuZXNzRGlzYWJsZWQsCisgICAgICAgICAgQ29tcHV0ZUxlbmd0aFNWR1pvb20gc3Zn
Wm9vbUVuYWJsZWQgPSBTVkdab29tRGlzYWJsZWQ+CitjbGFzcyBBcHBseVByb3BlcnR5Q29tcHV0
ZUxlbmd0aCA6IHB1YmxpYyBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8VD4gewogcHVibGljOgot
ICAgIEFwcGx5UHJvcGVydHlXaWR0aChHZXR0ZXJGdW5jdGlvbiBnZXR0ZXIsIFNldHRlckZ1bmN0
aW9uIHNldHRlciwgSW5pdGlhbEZ1bmN0aW9uIGluaXRpYWwpCi0gICAgICAgIDogQXBwbHlQcm9w
ZXJ0eURlZmF1bHRCYXNlPHVuc2lnbmVkIHNob3J0PihnZXR0ZXIsIHNldHRlciwgaW5pdGlhbCkK
KyAgICBBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aCh0eXBlbmFtZSBBcHBseVByb3BlcnR5RGVm
YXVsdEJhc2U8VD46OkdldHRlckZ1bmN0aW9uIGdldHRlciwgdHlwZW5hbWUgQXBwbHlQcm9wZXJ0
eURlZmF1bHRCYXNlPFQ+OjpTZXR0ZXJGdW5jdGlvbiBzZXR0ZXIsIHR5cGVuYW1lIEFwcGx5UHJv
cGVydHlEZWZhdWx0QmFzZTxUPjo6SW5pdGlhbEZ1bmN0aW9uIGluaXRpYWwpCisgICAgICAgIDog
QXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPFQ+KGdldHRlciwgc2V0dGVyLCBpbml0aWFsKQogICAg
IHsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFwcGx5VmFsdWUoQ1NTU3R5
bGVTZWxlY3Rvciogc2VsZWN0b3IsIENTU1ZhbHVlKiB2YWx1ZSkgY29uc3QKICAgICB7CisgICAg
ICAgIC8vIG5vdGU6IENTU1Byb3BlcnR5TGV0dGVyL1dvcmRTcGFjaW5nIHJpZ2h0IG5vdyBzZXRz
IHRvIHplcm8gaWYgaXQncyBub3QgYSBwcmltaXRpdmUgdmFsdWUgZm9yIHNvbWUgcmVhc29uLi4u
CiAgICAgICAgIGlmICghdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKTsKLSAgICAgICAgc2hvcnQgd2lkdGg7
Ci0gICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAg
Y2FzZSBDU1NWYWx1ZVRoaW46Ci0gICAgICAgICAgICB3aWR0aCA9IDE7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZU1lZGl1bToKLSAgICAgICAgICAgIHdpZHRoID0g
MzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlVGhpY2s6Ci0gICAg
ICAgICAgICB3aWR0aCA9IDU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NW
YWx1ZUludmFsaWQ6Ci0gICAgICAgICAgICB3aWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRl
TGVuZ3RoPHNob3J0PihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5
bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7Ci0gICAgICAgICAgICAv
LyBDU1MyIGJveCBtb2RlbCBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSBsZW5ndGhzIGZvciBib3Jk
ZXJzLgotICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpbnQgaWRlbnQgPSBwcmltaXRpdmVWYWx1ZS0+Z2V0SWRlbnQoKTsKKyAg
ICAgICAgVCBsZW5ndGg7CisgICAgICAgIGlmIChub3JtYWxFbmFibGVkICYmIGlkZW50ID09IENT
U1ZhbHVlTm9ybWFsKSB7CisgICAgICAgICAgICBsZW5ndGggPSAwOworICAgICAgICB9IGVsc2Ug
aWYgKHRoaWNrbmVzc0VuYWJsZWQgJiYgaWRlbnQgPT0gQ1NTVmFsdWVUaGluKSB7CisgICAgICAg
ICAgICBsZW5ndGggPSAxOworICAgICAgICB9IGVsc2UgaWYgKHRoaWNrbmVzc0VuYWJsZWQgJiYg
aWRlbnQgPT0gQ1NTVmFsdWVNZWRpdW0pIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDM7CisgICAg
ICAgIH0gZWxzZSBpZiAodGhpY2tuZXNzRW5hYmxlZCAmJiBpZGVudCA9PSBDU1NWYWx1ZVRoaWNr
KSB7CisgICAgICAgICAgICBsZW5ndGggPSA1OworICAgICAgICB9IGVsc2UgaWYgKGlkZW50ID09
IENTU1ZhbHVlSW52YWxpZCkgeworICAgICAgICAgICAgZmxvYXQgem9vbSA9IChzdmdab29tRW5h
YmxlZCAmJiBzZWxlY3Rvci0+dXNlU1ZHWm9vbVJ1bGVzKCkpID8gMS4wZiA6IHNlbGVjdG9yLT5z
dHlsZSgpLT5lZmZlY3RpdmVab29tKCk7CisgICAgICAgICAgICBsZW5ndGggPSBwcmltaXRpdmVW
YWx1ZS0+Y29tcHV0ZUxlbmd0aDxUPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RF
bGVtZW50U3R5bGUoKSwgem9vbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIHNldFZhbHVlKHNlbGVjdG9y
LT5zdHlsZSgpLCB3aWR0aCk7CisgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBs
ZW5ndGgpOwogICAgIH0KIH07CiAKQEAgLTU4MiwxMiArNTg2LDEyIEBAIENTU1N0eWxlQXBwbHlQ
cm9wZXJ0eTo6Q1NTU3R5bGVBcHBseVByb3AKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21TdHlsZSwgbmV3IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3JkZXJT
dHlsZT4oJlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21TdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRC
b3JkZXJCb3R0b21TdHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUpKTsKICAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIG5ldyBBcHBs
eVByb3BlcnR5RGVmYXVsdDxFQm9yZGVyU3R5bGU+KCZSZW5kZXJTdHlsZTo6Ym9yZGVyTGVmdFN0
eWxlLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckxlZnRTdHlsZSwgJlJlbmRlclN0eWxlOjppbml0
aWFsQm9yZGVyU3R5bGUpKTsKIAotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlclRvcFdpZHRoLCBuZXcgQXBwbHlQcm9wZXJ0eVdpZHRoKCZSZW5kZXJTdHlsZTo6Ym9yZGVy
VG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6
aW5pdGlhbEJvcmRlcldpZHRoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVyU3R5bGU6OmJv
cmRlclJpZ2h0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmlnaHRXaWR0aCwgJlJlbmRl
clN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVy
U3R5bGU6OmJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdp
ZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOwotICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0
aCgmUmVuZGVyU3R5bGU6OmJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJM
ZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoKSk7Ci0gICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBuZXcgQXBwbHlQcm9wZXJ0eVdp
ZHRoKCZSZW5kZXJTdHlsZTo6b3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVX
aWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgpKTsKLSAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIG5ldyBBcHBseVByb3Bl
cnR5V2lkdGgoJlJlbmRlclN0eWxlOjpjb2x1bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0
Q29sdW1uUnVsZVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOworICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBuZXcgQXBwbHlQ
cm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsIE5vcm1hbERpc2FibGVkLCBUaGlj
a25lc3NFbmFibGVkPigmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6
OnNldEJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIG5ldyBB
cHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgTm9ybWFsRGlzYWJsZWQs
IFRoaWNrbmVzc0VuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0aCwgJlJlbmRl
clN0eWxlOjpzZXRCb3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJX
aWR0aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsIE5vcm1h
bERpc2FibGVkLCBUaGlja25lc3NFbmFibGVkPigmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbVdp
ZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3JkZXJXaWR0aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJv
cmRlckxlZnRXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNo
b3J0LCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0eWxlOjpib3Jk
ZXJMZWZ0V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eU91dGxpbmVXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVk
IHNob3J0LCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0eWxlOjpv
dXRsaW5lV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxCb3JkZXJXaWR0aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVu
c2lnbmVkIHNob3J0LCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0
eWxlOjpjb2x1bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVsZVdpZHRoLCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOwogCiAgICAgc2V0UHJvcGVydHlIYW5k
bGVyKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBuZXcgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBw
cmVzc1ZhbHVlPihwcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlKSwgcHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgpKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHQsIG5ldyBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNz
VmFsdWU+KHByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IpLCBwcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlKSwgcHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCkpKTsKQEAgLTYwNiw2ICs2MTAsMTMgQEAgQ1NT
U3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcAogICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgbmV3IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8
RXhwYW5kVmFsdWU+KHByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXMpLCBwcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cyksIHBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMpLCBwcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cykpKTsKICAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXMsIENTU1Byb3BlcnR5
Qm9yZGVyUmFkaXVzKTsKIAorICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8
c2hvcnQ+KCZSZW5kZXJTdHlsZTo6aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsICZSZW5kZXJTdHls
ZTo6c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEhvcml6
b250YWxCb3JkZXJTcGFjaW5nKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5n
dGg8c2hvcnQ+KCZSZW5kZXJTdHlsZTo6dmVydGljYWxCb3JkZXJTcGFjaW5nLCAmUmVuZGVyU3R5
bGU6OnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjppbml0aWFsVmVydGlj
YWxCb3JkZXJTcGFjaW5nKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9y
ZGVyU3BhY2luZywgbmV3IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZT4ocHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcpLCBw
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcpKSk7
CisKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLCBuZXcg
QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8aW50LCBOb3JtYWxFbmFibGVkLCBUaGlja25lc3NE
aXNhYmxlZCwgU1ZHWm9vbUVuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6bGV0dGVyU3BhY2luZywgJlJl
bmRlclN0eWxlOjpzZXRMZXR0ZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMZXR0ZXJX
b3JkU3BhY2luZykpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdvcmRTcGFj
aW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8aW50LCBOb3JtYWxFbmFibGVkLCBU
aGlja25lc3NEaXNhYmxlZCwgU1ZHWm9vbUVuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6d29yZFNwYWNp
bmcsICZSZW5kZXJTdHlsZTo6c2V0V29yZFNwYWNpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbExl
dHRlcldvcmRTcGFjaW5nKSk7CisKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlG
b250U3R5bGUsIG5ldyBBcHBseVByb3BlcnR5Rm9udDxGb250SXRhbGljPigmRm9udERlc2NyaXB0
aW9uOjppdGFsaWMsICZGb250RGVzY3JpcHRpb246OnNldEl0YWxpYywgRm9udEl0YWxpY09mZikp
OwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBuZXcgQXBw
bHlQcm9wZXJ0eUZvbnQ8Rm9udFNtYWxsQ2Fwcz4oJkZvbnREZXNjcmlwdGlvbjo6c21hbGxDYXBz
LCAmRm9udERlc2NyaXB0aW9uOjpzZXRTbWFsbENhcHMsIEZvbnRTbWFsbENhcHNPZmYpKTsKICAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nLCBuZXcgQXBwbHlQ
cm9wZXJ0eUZvbnQ8VGV4dFJlbmRlcmluZ01vZGU+KCZGb250RGVzY3JpcHRpb246OnRleHRSZW5k
ZXJpbmdNb2RlLCAmRm9udERlc2NyaXB0aW9uOjpzZXRUZXh0UmVuZGVyaW5nTW9kZSwgQXV0b1Rl
eHRSZW5kZXJpbmcpKTsKQEAgLTYxNiw3ICs2MjcsNiBAQCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6
OkNTU1N0eWxlQXBwbHlQcm9wCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3V0
bGluZVN0eWxlLCBuZXcgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxFeHBhbmRWYWx1ZT4obmV3IEFw
cGx5UHJvcGVydHlEZWZhdWx0PE91dGxpbmVJc0F1dG8+KCZSZW5kZXJTdHlsZTo6b3V0bGluZVN0
eWxlSXNBdXRvLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZUlzQXV0bywgJlJlbmRlclN0
eWxlOjppbml0aWFsT3V0bGluZVN0eWxlSXNBdXRvKSwgbmV3IEFwcGx5UHJvcGVydHlEZWZhdWx0
PEVCb3JkZXJTdHlsZT4oJlJlbmRlclN0eWxlOjpvdXRsaW5lU3R5bGUsICZSZW5kZXJTdHlsZTo6
c2V0T3V0bGluZVN0eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSkpKTsKICAg
ICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsIG5ldyBBcHBseVBy
b3BlcnR5Q29sb3I8SW5oZXJpdEZyb21QYXJlbnQ+KCZSZW5kZXJTdHlsZTo6b3V0bGluZUNvbG9y
LCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVDb2xvciwgJlJlbmRlclN0eWxlOjpjb2xvcikpOwog
Ci0KICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIG5ldyBBcHBs
eVByb3BlcnR5RGVmYXVsdDxFT3ZlcmZsb3c+KCZSZW5kZXJTdHlsZTo6b3ZlcmZsb3dYLCAmUmVu
ZGVyU3R5bGU6OnNldE92ZXJmbG93WCwgJlJlbmRlclN0eWxlOjppbml0aWFsT3ZlcmZsb3dYKSk7
CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBuZXcgQXBwbHlQ
cm9wZXJ0eURlZmF1bHQ8RU92ZXJmbG93PigmUmVuZGVyU3R5bGU6Om92ZXJmbG93WSwgJlJlbmRl
clN0eWxlOjpzZXRPdmVyZmxvd1ksICZSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJmbG93WSkpOwog
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU92ZXJmbG93LCBuZXcgQXBwbHlQcm9w
ZXJ0eUV4cGFuZGluZzxFeHBhbmRWYWx1ZT4ocHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3Zl
cmZsb3dYKSwgcHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dZKSkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gODkwOTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM2NDMsOSArMzY0Myw5IEBAIGlubGluZSBTVkdEaXNwbGF5UHJvcGVydHlHdWFyZDo6flNW
R0Rpc3AKIC8vIHdpZHRoL2hlaWdodC9ib3JkZXIvcGFkZGluZy8uLi4gZnJvbSB0aGUgUmVuZGVy
U3R5bGUgLT4gZm9yIFNWRyB0aGVzZSB2YWx1ZXMgd291bGQgbmV2ZXIgc2NhbGUsCiAvLyBpZiB3
ZSdkIHBhc3MgYSAxLjAgem9vbSBmYWN0b3IgZXZlcnlod2VyZS4gU28gd2Ugb25seSBwYXNzIGEg
em9vbSBmYWN0b3Igb2YgMS4wIGZvciBzcGVjaWZpYwogLy8gcHJvcGVydGllcyB0aGF0IGFyZSBO
T1QgYWxsb3dlZCB0byBzY2FsZSB3aXRoaW4gYSB6b29tZWQgU1ZHIGRvY3VtZW50IChsZXR0ZXIv
d29yZC1zcGFjaW5nL2ZvbnQtc2l6ZSkuCi1zdGF0aWMgaW5saW5lIGJvb2wgdXNlU1ZHWm9vbVJ1
bGVzKGNvbnN0IEVsZW1lbnQqIGUpCitib29sIENTU1N0eWxlU2VsZWN0b3I6OnVzZVNWR1pvb21S
dWxlcygpCiB7Ci0gICAgcmV0dXJuIGUgJiYgZS0+aXNTVkdFbGVtZW50KCk7CisgICAgcmV0dXJu
IG1fZWxlbWVudCAmJiBtX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOwogfQogCiB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCkBAIC0z
NzU2LDMzICszNzU2LDYgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGlu
dAogICAgIGNhc2UgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlOgogICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHdoaXRlU3BhY2UsIFdoaXRlU3BhY2UpCiAgICAg
ICAgIHJldHVybjsKLSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzogewotICAgICAg
ICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIb3Jpem9udGFsQm9y
ZGVyU3BhY2luZyhtX3BhcmVudFN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygpKTsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhtX3BhcmVudFN0eWxl
LT52ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAo
aXNJbml0aWFsKSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIb3Jpem9udGFsQm9yZGVyU3Bh
Y2luZygwKTsKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZygw
KTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZzogewotICAgICAgICBIQU5ETEVfSU5IRVJJ
VF9BTkRfSU5JVElBTChob3Jpem9udGFsQm9yZGVyU3BhY2luZywgSG9yaXpvbnRhbEJvcmRlclNw
YWNpbmcpCi0gICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHNob3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxz
aG9ydD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAg
bV9zdHlsZS0+c2V0SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3Bh
Y2luZzogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEJvcmRl
clNwYWNpbmcsIFZlcnRpY2FsQm9yZGVyU3BhY2luZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVW
YWx1ZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPHNob3J0PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5
bGUsIHpvb21GYWN0b3IpOwotICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNp
bmcoc3BhY2luZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eUN1cnNvcjoKICAgICAgICAgaWYgKGlzSW5oZXJpdCkgewogICAgICAgICAgICAgbV9zdHlsZS0+
c2V0Q3Vyc29yKG1fcGFyZW50U3R5bGUtPmN1cnNvcigpKTsKQEAgLTM4MjgsNDEgKzM4MDEsNiBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIG1fc3R5
bGUtPnNldExpc3RTdHlsZUltYWdlKHN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFn
ZSwgdmFsdWUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5
TGV0dGVyU3BhY2luZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6Ci0gICAgewot
ICAgICAgICBpZiAoaXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05E
KENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgbGV0dGVyU3BhY2luZywgTGV0dGVyU3BhY2luZykK
LSAgICAgICAgICAgIEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywg
d29yZFNwYWNpbmcsIFdvcmRTcGFjaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJ
QUxfQ09ORF9XSVRIX1ZBTFVFKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgTGV0dGVyU3BhY2lu
ZywgTGV0dGVyV29yZFNwYWNpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJ
VEhfVkFMVUUoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgV29yZFNwYWNpbmcsIExldHRlcldvcmRT
cGFjaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpbnQgd2lkdGggPSAwOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZl
VmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKLSAgICAgICAgICAgIHdpZHRo
ID0gMDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVW
YWx1ZS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgdXNl
U1ZHWm9vbVJ1bGVzKG1fZWxlbWVudCkgPyAxLjBmIDogem9vbUZhY3Rvcik7Ci0gICAgICAgIH0K
LSAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3Bh
Y2luZzoKLSAgICAgICAgICAgIG1fc3R5bGUtPnNldExldHRlclNwYWNpbmcod2lkdGgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldFdvcmRTcGFjaW5nKHdpZHRoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgLy8gIyMjIG5lZWRzIHRoZSBkZWZpbml0aW9ucyBpbiByZW5kZXJz
dHlsZQotICAgICAgICBkZWZhdWx0OiBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47
Ci0gICAgfQotCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKICAgICAgICAgSEFORExF
X0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRSh3b3JkQnJlYWssIFdvcmRCcmVhaykK
ICAgICAgICAgcmV0dXJuOwpAQCAtNDQ3NCw3ICs0NDEyLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5z
ZXRVc2VQcmludGVyRm9udChtX2NoZWNrZXIubV9kb2N1bWVudC0+cHJpbnRpbmcoKSk7CiAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBmYWN0b3IuCi0gICAg
ICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNp
emVGcm9tU3BlY2lmaWVkU2l6ZShtX2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwg
Zm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZp
ZWRTaXplKCksIHVzZVNWR1pvb21SdWxlcyhtX2VsZW1lbnQpKSk7CisgICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lm
aWVkU2l6ZShtX2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0
aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVz
ZVNWR1pvb21SdWxlcygpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnRE
ZXNjcmlwdGlvbihmb250RGVzY3JpcHRpb24pKQogICAgICAgICAgICAgICAgICAgICBtX2ZvbnRE
aXJ0eSA9IHRydWU7CiAgICAgICAgICAgICB9CkBAIC01MzQ3LDYgKzUyODUsMTEgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJUb3BSaWdodFJhZGl1czoKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVm
dFJhZGl1czoKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJWZXJ0aWNhbFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgogICAgIGNhc2UgQ1NTUHJvcGVydHlG
b250U3R5bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0UmVuZGVyaW5nOgpAQCAtNjExMSw5ICs2MDU0LDcgQEAgdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjpjaGVja0ZvckdlbmVyaWNGYQogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRG
b250U2l6ZShGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYXQgc2l6ZSkKIHsK
ICAgICBmb250RGVzY3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzaXplKTsKLQotICAgIGJvb2wg
dXNlU1ZHWm9vbVJ1bGVzID0gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7
Ci0gICAgZm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9t
U3BlY2lmaWVkU2l6ZShtX2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERl
c2NyaXB0aW9uLmlzQWJzb2x1dGVTaXplKCksIHNpemUsIHVzZVNWR1pvb21SdWxlcykpOyAKKyAg
ICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKGdldENvbXB1dGVkU2l6ZUZyb21TcGVj
aWZpZWRTaXplKG1fY2hlY2tlci5tX2RvY3VtZW50LCBtX3N0eWxlLmdldCgpLCBmb250RGVzY3Jp
cHRpb24uaXNBYnNvbHV0ZVNpemUoKSwgc2l6ZSwgdXNlU1ZHWm9vbVJ1bGVzKCkpKTsKIH0KIAog
ZmxvYXQgQ1NTU3R5bGVTZWxlY3Rvcjo6Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUo
RG9jdW1lbnQqIGRvY3VtZW50LCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgaXNBYnNvbHV0ZVNp
emUsIGZsb2F0IHNwZWNpZmllZFNpemUsIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA4OTA5OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3
ICsxNjYsMTAgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgc2V0Rm9udFNp
emUoRm9udERlc2NyaXB0aW9uJiwgZmxvYXQgc2l6ZSk7CiAgICAgICAgIHN0YXRpYyBmbG9hdCBn
ZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShEb2N1bWVudCosIFJlbmRlclN0eWxlKiwg
Ym9vbCBpc0Fic29sdXRlU2l6ZSwgZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCB1c2VTVkdab29t
UnVsZXMpOworCiAgICAgcHVibGljOgorICAgICAgICBib29sIHVzZVNWR1pvb21SdWxlcygpOwor
CiAgICAgICAgIENvbG9yIGdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZh
bHVlKikgY29uc3Q7CiAKICAgICAgICAgYm9vbCBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25z
dCBBdG9taWNTdHJpbmcmKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97738</attachid>
            <date>2011-06-19 20:45:25 -0700</date>
            <delta_ts>2011-07-13 21:23:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62957-20110620134522.patch</filename>
            <type>text/plain</type>
            <size>19335</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5MjI3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDYtMTkgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgdGVtcGxhdGVkIGNvbXB1dGUg
bGVuZ3RoIGNsYXNzIGluIENTU1N0eWxlQXBwbHlQcm9wZXJ0eSwgYW5kIHVzZSB0byBoYW5kbGUg
c2V2ZXJhbCBDU1MgcHJvcGVydGllcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYyOTU3CisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC8gcmVmYWN0b3Jp
bmcgb25seS4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aCk6CisgICAgICAgIEFk
ZCBjb21wdXRlTGVuZ2h0IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB1bnNpZ25lZCBzaG9ydC4KKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoOjpBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aCk6
CisgICAgICAgIEFkZGVkIGNsYXNzIHRvIGhhbmRsZSBjb21wdXRlTGVuZ3RoIGJhc2VkIHByb3Bl
cnRpZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxl
QXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIEluaXRpYWxpemUgQXBwbHlQcm9wZXJ0eUNvbXB1dGVM
ZW5ndGggZm9yIGFwcHJvcHJpYXRlIHByb3BlcnRpZXMuCisgICAgICAgICogY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6dXNlU1ZH
Wm9vbVJ1bGVzKToKKyAgICAgICAgTWFrZSB0aGlzIGEgcHVibGljIG1lbWJlciBmdW5jdGlvbiBp
bnN0ZWFkIG9mIGEgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgUmVtb3ZlZCBjb2RlIG5v
dyBpbXBsZW1lbnRlZCBpbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuCisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjpzZXRGb250U2l6ZSk6CisgICAgICAgIFVzZSBuZXcgdXNlU1ZH
Wm9vbVJ1bGVzIGZ1bmN0aW9uLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6Cisg
ICAgICAgIEFkZCBpbnRlcmZhY2UgZm9yIHVzZVNWR1pvb21SdWxlcy4KKwogMjAxMS0wNi0xOSAg
QWRhbSBCZXJna3Zpc3QgIDxhZGFtLmJlcmdrdmlzdEBlcmljc3Nvbi5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiA4OTIyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsMTEg
QEAgdGVtcGxhdGU8PiBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcAogICAgIHJldHVybiBy
b3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248c2hvcnQsIFNIUlRfTUFYLCBTSFJUX01JTj4oY29t
cHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdG
b250U2l6ZSkpOwogfQogCit0ZW1wbGF0ZTw+IHVuc2lnbmVkIHNob3J0IENTU1ByaW1pdGl2ZVZh
bHVlOjpjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSwgZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCit7CisgICAg
cmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjx1bnNpZ25lZCBzaG9ydCwgVVNIUlRf
TUFYLCAwPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIs
IGNvbXB1dGluZ0ZvbnRTaXplKSk7Cit9CisKIHRlbXBsYXRlPD4gZmxvYXQgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNvbXB1dGVMZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9v
dFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJv
b3RTdHlsZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiA4OTIyNykK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODksNyArMTg5LDYgQEAgcHJpdmF0ZToKICAgICBJbml0aWFsRnVuY3Rpb24g
bV9pbml0aWFsOwogfTsKIAotLy8gQ1NTUHJvcGVydHlEaXJlY3Rpb24KIGNsYXNzIEFwcGx5UHJv
cGVydHlEaXJlY3Rpb24gOiBwdWJsaWMgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8VGV4dERpcmVjdGlv
bj4gewogcHVibGljOgogICAgIEFwcGx5UHJvcGVydHlEaXJlY3Rpb24oR2V0dGVyRnVuY3Rpb24g
Z2V0dGVyLCBTZXR0ZXJGdW5jdGlvbiBzZXR0ZXIsIEluaXRpYWxGdW5jdGlvbiBpbml0aWFsKQpA
QCAtMzg3LDQyICszODYsNDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgKENTU1N0eWxlU2VsZWN0
b3I6OiptX21hcEZpbGwpKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CiB9
OwogCi1jbGFzcyBBcHBseVByb3BlcnR5V2lkdGggOiBwdWJsaWMgQXBwbHlQcm9wZXJ0eURlZmF1
bHRCYXNlPHVuc2lnbmVkIHNob3J0PiB7CitlbnVtIENvbXB1dGVMZW5ndGhOb3JtYWwge05vcm1h
bERpc2FibGVkID0gMCwgTm9ybWFsRW5hYmxlZH07CitlbnVtIENvbXB1dGVMZW5ndGhUaGlja25l
c3Mge1RoaWNrbmVzc0Rpc2FibGVkID0gMCwgVGhpY2tuZXNzRW5hYmxlZH07CitlbnVtIENvbXB1
dGVMZW5ndGhTVkdab29tIHtTVkdab29tRGlzYWJsZWQgPSAwLCBTVkdab29tRW5hYmxlZH07Cit0
ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKKyAgICAgICAgICBDb21wdXRlTGVuZ3RoTm9ybWFsIG5vcm1h
bEVuYWJsZWQgPSBOb3JtYWxEaXNhYmxlZCwKKyAgICAgICAgICBDb21wdXRlTGVuZ3RoVGhpY2tu
ZXNzIHRoaWNrbmVzc0VuYWJsZWQgPSBUaGlja25lc3NEaXNhYmxlZCwKKyAgICAgICAgICBDb21w
dXRlTGVuZ3RoU1ZHWm9vbSBzdmdab29tRW5hYmxlZCA9IFNWR1pvb21EaXNhYmxlZD4KK2NsYXNz
IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoIDogcHVibGljIEFwcGx5UHJvcGVydHlEZWZhdWx0
QmFzZTxUPiB7CiBwdWJsaWM6Ci0gICAgQXBwbHlQcm9wZXJ0eVdpZHRoKEdldHRlckZ1bmN0aW9u
IGdldHRlciwgU2V0dGVyRnVuY3Rpb24gc2V0dGVyLCBJbml0aWFsRnVuY3Rpb24gaW5pdGlhbCkK
LSAgICAgICAgOiBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8dW5zaWduZWQgc2hvcnQ+KGdldHRl
ciwgc2V0dGVyLCBpbml0aWFsKQorICAgIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoKHR5cGVu
YW1lIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxUPjo6R2V0dGVyRnVuY3Rpb24gZ2V0dGVyLCB0
eXBlbmFtZSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8VD46OlNldHRlckZ1bmN0aW9uIHNldHRl
ciwgdHlwZW5hbWUgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPFQ+OjpJbml0aWFsRnVuY3Rpb24g
aW5pdGlhbCkKKyAgICAgICAgOiBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8VD4oZ2V0dGVyLCBz
ZXR0ZXIsIGluaXRpYWwpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZv
aWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVl
KSBjb25zdAogICAgIHsKKyAgICAgICAgLy8gbm90ZTogQ1NTUHJvcGVydHlMZXR0ZXIvV29yZFNw
YWNpbmcgcmlnaHQgbm93IHNldHMgdG8gemVybyBpZiBpdCdzIG5vdCBhIHByaW1pdGl2ZSB2YWx1
ZSBmb3Igc29tZSByZWFzb24uLi4KICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1
ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwot
ICAgICAgICBzaG9ydCB3aWR0aDsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0
SWRlbnQoKSkgewotICAgICAgICBjYXNlIENTU1ZhbHVlVGhpbjoKLSAgICAgICAgICAgIHdpZHRo
ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgot
ICAgICAgICAgICAgd2lkdGggPSAzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q1NTVmFsdWVUaGljazoKLSAgICAgICAgICAgIHdpZHRoID0gNTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKLSAgICAgICAgICAgIHdpZHRoID0gcHJp
bWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8c2hvcnQ+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxl
Y3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9v
bSgpKTsKLSAgICAgICAgICAgIC8vIENTUzIgYm94IG1vZGVsIGRvZXMgbm90IGFsbG93IG5lZ2F0
aXZlIGxlbmd0aHMgZm9yIGJvcmRlcnMuCi0gICAgICAgICAgICBpZiAod2lkdGggPCAwKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGludCBpZGVudCA9IHByaW1pdGl2ZVZh
bHVlLT5nZXRJZGVudCgpOworICAgICAgICBUIGxlbmd0aDsKKyAgICAgICAgaWYgKG5vcm1hbEVu
YWJsZWQgJiYgaWRlbnQgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKKyAgICAgICAgICAgIGxlbmd0aCA9
IDA7CisgICAgICAgIH0gZWxzZSBpZiAodGhpY2tuZXNzRW5hYmxlZCAmJiBpZGVudCA9PSBDU1NW
YWx1ZVRoaW4pIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDE7CisgICAgICAgIH0gZWxzZSBpZiAo
dGhpY2tuZXNzRW5hYmxlZCAmJiBpZGVudCA9PSBDU1NWYWx1ZU1lZGl1bSkgeworICAgICAgICAg
ICAgbGVuZ3RoID0gMzsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlja25lc3NFbmFibGVkICYmIGlk
ZW50ID09IENTU1ZhbHVlVGhpY2spIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDU7CisgICAgICAg
IH0gZWxzZSBpZiAoaWRlbnQgPT0gQ1NTVmFsdWVJbnZhbGlkKSB7CisgICAgICAgICAgICBmbG9h
dCB6b29tID0gKHN2Z1pvb21FbmFibGVkICYmIHNlbGVjdG9yLT51c2VTVkdab29tUnVsZXMoKSkg
PyAxLjBmIDogc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAgICAg
IGxlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPFQ+KHNlbGVjdG9yLT5zdHls
ZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgbGVuZ3Ro
ID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCB3
aWR0aCk7CisgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBsZW5ndGgpOwogICAg
IH0KIH07CiAKQEAgLTU4MiwxMiArNTg3LDEyIEBAIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NT
U3R5bGVBcHBseVByb3AKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21TdHlsZSwgbmV3IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3JkZXJTdHlsZT4oJlJlbmRl
clN0eWxlOjpib3JkZXJCb3R0b21TdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21T
dHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIG5ldyBBcHBseVByb3BlcnR5RGVm
YXVsdDxFQm9yZGVyU3R5bGU+KCZSZW5kZXJTdHlsZTo6Ym9yZGVyTGVmdFN0eWxlLCAmUmVuZGVy
U3R5bGU6OnNldEJvcmRlckxlZnRTdHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5
bGUpKTsKIAotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRo
LCBuZXcgQXBwbHlQcm9wZXJ0eVdpZHRoKCZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wV2lkdGgsICZS
ZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRl
cldpZHRoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRX
aWR0aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0V2lk
dGgsICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0
aWFsQm9yZGVyV2lkdGgpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21XaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVyU3R5bGU6OmJvcmRl
ckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVy
U3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVyU3R5
bGU6OmJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0V2lkdGgsICZS
ZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBuZXcgQXBwbHlQcm9wZXJ0eVdpZHRoKCZSZW5kZXJT
dHlsZTo6b3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVXaWR0aCwgJlJlbmRl
clN0eWxlOjppbml0aWFsQm9yZGVyV2lkdGgpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIG5ldyBBcHBseVByb3BlcnR5V2lkdGgoJlJl
bmRlclN0eWxlOjpjb2x1bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVsZVdp
ZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1
dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVk
PigmUmVuZGVyU3R5bGU6OmJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRv
cFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOworICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIG5ldyBBcHBseVByb3BlcnR5
Q29tcHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0Vu
YWJsZWQ+KCZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRC
b3JkZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOworICAg
IHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBuZXcgQXBw
bHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsIE5vcm1hbERpc2FibGVkLCBU
aGlja25lc3NFbmFibGVkPigmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVy
U3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJX
aWR0aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0
aCwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCBOb3JtYWxE
aXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0eWxlOjpib3JkZXJMZWZ0V2lkdGgs
ICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxC
b3JkZXJXaWR0aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU91dGxpbmVX
aWR0aCwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCBOb3Jt
YWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0eWxlOjpvdXRsaW5lV2lkdGgs
ICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3Jk
ZXJXaWR0aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVt
blJ1bGVXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0
LCBOb3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0eWxlOjpjb2x1bW5S
dWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVsZVdpZHRoLCAmUmVuZGVyU3R5bGU6
OmluaXRpYWxCb3JkZXJXaWR0aCkpOwogCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5Qm9yZGVyVG9wLCBuZXcgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlPihw
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlKSwgcHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
Qm9yZGVyVG9wV2lkdGgpKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHQsIG5ldyBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWU+KHByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IpLCBwcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlKSwgcHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRXaWR0aCkpKTsKQEAgLTYwNiw2ICs2MTEsMTMgQEAgQ1NTU3R5bGVBcHBseVBy
b3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcAogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eUJvcmRlclJhZGl1cywgbmV3IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8RXhwYW5kVmFsdWU+
KHByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMpLCBwcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cyksIHByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMpLCBwcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cykpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVz
KTsKIAorICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6
b250YWxTcGFjaW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8c2hvcnQ+KCZSZW5k
ZXJTdHlsZTo6aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6c2V0SG9yaXpv
bnRhbEJvcmRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEhvcml6b250YWxCb3JkZXJT
cGFjaW5nKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
VmVydGljYWxTcGFjaW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8c2hvcnQ+KCZS
ZW5kZXJTdHlsZTo6dmVydGljYWxCb3JkZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OnNldFZlcnRp
Y2FsQm9yZGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjppbml0aWFsVmVydGljYWxCb3JkZXJTcGFj
aW5nKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywg
bmV3IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZT4ocHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcpLCBwcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcpKSk7CisKKyAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLCBuZXcgQXBwbHlQcm9wZXJ0
eUNvbXB1dGVMZW5ndGg8aW50LCBOb3JtYWxFbmFibGVkLCBUaGlja25lc3NEaXNhYmxlZCwgU1ZH
Wm9vbUVuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6bGV0dGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjpz
ZXRMZXR0ZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMZXR0ZXJXb3JkU3BhY2luZykp
OworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nLCBuZXcgQXBw
bHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8aW50LCBOb3JtYWxFbmFibGVkLCBUaGlja25lc3NEaXNh
YmxlZCwgU1ZHWm9vbUVuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6d29yZFNwYWNpbmcsICZSZW5kZXJT
dHlsZTo6c2V0V29yZFNwYWNpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbExldHRlcldvcmRTcGFj
aW5nKSk7CisKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250U3R5bGUsIG5l
dyBBcHBseVByb3BlcnR5Rm9udDxGb250SXRhbGljPigmRm9udERlc2NyaXB0aW9uOjppdGFsaWMs
ICZGb250RGVzY3JpcHRpb246OnNldEl0YWxpYywgRm9udEl0YWxpY09mZikpOwogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBuZXcgQXBwbHlQcm9wZXJ0eUZv
bnQ8Rm9udFNtYWxsQ2Fwcz4oJkZvbnREZXNjcmlwdGlvbjo6c21hbGxDYXBzLCAmRm9udERlc2Ny
aXB0aW9uOjpzZXRTbWFsbENhcHMsIEZvbnRTbWFsbENhcHNPZmYpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUZvbnQ8
VGV4dFJlbmRlcmluZ01vZGU+KCZGb250RGVzY3JpcHRpb246OnRleHRSZW5kZXJpbmdNb2RlLCAm
Rm9udERlc2NyaXB0aW9uOjpzZXRUZXh0UmVuZGVyaW5nTW9kZSwgQXV0b1RleHRSZW5kZXJpbmcp
KTsKQEAgLTYxNiw3ICs2MjgsNiBAQCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxlQXBw
bHlQcm9wCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLCBu
ZXcgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxFeHBhbmRWYWx1ZT4obmV3IEFwcGx5UHJvcGVydHlE
ZWZhdWx0PE91dGxpbmVJc0F1dG8+KCZSZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxlSXNBdXRvLCAm
UmVuZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZUlzQXV0bywgJlJlbmRlclN0eWxlOjppbml0aWFs
T3V0bGluZVN0eWxlSXNBdXRvKSwgbmV3IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3JkZXJTdHls
ZT4oJlJlbmRlclN0eWxlOjpvdXRsaW5lU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0
eWxlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSkpKTsKICAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsIG5ldyBBcHBseVByb3BlcnR5Q29sb3I8
SW5oZXJpdEZyb21QYXJlbnQ+KCZSZW5kZXJTdHlsZTo6b3V0bGluZUNvbG9yLCAmUmVuZGVyU3R5
bGU6OnNldE91dGxpbmVDb2xvciwgJlJlbmRlclN0eWxlOjpjb2xvcikpOwogCi0KICAgICBzZXRQ
cm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIG5ldyBBcHBseVByb3BlcnR5RGVm
YXVsdDxFT3ZlcmZsb3c+KCZSZW5kZXJTdHlsZTo6b3ZlcmZsb3dYLCAmUmVuZGVyU3R5bGU6OnNl
dE92ZXJmbG93WCwgJlJlbmRlclN0eWxlOjppbml0aWFsT3ZlcmZsb3dYKSk7CiAgICAgc2V0UHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBuZXcgQXBwbHlQcm9wZXJ0eURlZmF1
bHQ8RU92ZXJmbG93PigmUmVuZGVyU3R5bGU6Om92ZXJmbG93WSwgJlJlbmRlclN0eWxlOjpzZXRP
dmVyZmxvd1ksICZSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJmbG93WSkpOwogICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eU92ZXJmbG93LCBuZXcgQXBwbHlQcm9wZXJ0eUV4cGFuZGlu
ZzxFeHBhbmRWYWx1ZT4ocHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dYKSwgcHJv
cGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dZKSkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gODkyMjcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NjcsOSAr
MzY2Nyw5IEBAIGlubGluZSBTVkdEaXNwbGF5UHJvcGVydHlHdWFyZDo6flNWR0Rpc3AKIC8vIHdp
ZHRoL2hlaWdodC9ib3JkZXIvcGFkZGluZy8uLi4gZnJvbSB0aGUgUmVuZGVyU3R5bGUgLT4gZm9y
IFNWRyB0aGVzZSB2YWx1ZXMgd291bGQgbmV2ZXIgc2NhbGUsCiAvLyBpZiB3ZSdkIHBhc3MgYSAx
LjAgem9vbSBmYWN0b3IgZXZlcnlod2VyZS4gU28gd2Ugb25seSBwYXNzIGEgem9vbSBmYWN0b3Ig
b2YgMS4wIGZvciBzcGVjaWZpYwogLy8gcHJvcGVydGllcyB0aGF0IGFyZSBOT1QgYWxsb3dlZCB0
byBzY2FsZSB3aXRoaW4gYSB6b29tZWQgU1ZHIGRvY3VtZW50IChsZXR0ZXIvd29yZC1zcGFjaW5n
L2ZvbnQtc2l6ZSkuCi1zdGF0aWMgaW5saW5lIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKGNvbnN0IEVs
ZW1lbnQqIGUpCitib29sIENTU1N0eWxlU2VsZWN0b3I6OnVzZVNWR1pvb21SdWxlcygpCiB7Ci0g
ICAgcmV0dXJuIGUgJiYgZS0+aXNTVkdFbGVtZW50KCk7CisgICAgcmV0dXJuIG1fZWxlbWVudCAm
JiBtX2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCkBAIC0zNzgwLDMzICszNzgw
LDYgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXaGl0ZVNwYWNlOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TF9BTkRfUFJJTUlUSVZFKHdoaXRlU3BhY2UsIFdoaXRlU3BhY2UpCiAgICAgICAgIHJldHVybjsK
LSAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzogewotICAgICAgICBpZiAoaXNJbmhl
cml0KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyht
X3BhcmVudFN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygpKTsKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhtX3BhcmVudFN0eWxlLT52ZXJ0aWNhbEJv
cmRlclNwYWNpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7
Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZygwKTsKLSAg
ICAgICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZygwKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJIb3Jpem9udGFsU3BhY2luZzogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElB
TChob3Jpem9udGFsQm9yZGVyU3BhY2luZywgSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpCi0gICAg
ICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNo
b3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxzaG9ydD4oc3R5bGUo
KSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0
SG9yaXpvbnRhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzogewotICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEJvcmRlclNwYWNpbmcsIFZl
cnRpY2FsQm9yZGVyU3BhY2luZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5j
b21wdXRlTGVuZ3RoPHNob3J0PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0
b3IpOwotICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKICAg
ICAgICAgaWYgKGlzSW5oZXJpdCkgewogICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q3Vyc29yKG1f
cGFyZW50U3R5bGUtPmN1cnNvcigpKTsKQEAgLTM4NTIsNDEgKzM4MjUsNiBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIG1fc3R5bGUtPnNldExpc3RT
dHlsZUltYWdlKHN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgdmFsdWUpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2lu
ZzoKLSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6Ci0gICAgewotICAgICAgICBpZiAo
aXNJbmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5
TGV0dGVyU3BhY2luZywgbGV0dGVyU3BhY2luZywgTGV0dGVyU3BhY2luZykKLSAgICAgICAgICAg
IEhBTkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgd29yZFNwYWNpbmcs
IFdvcmRTcGFjaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UgaWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRI
X1ZBTFVFKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgTGV0dGVyU3BhY2luZywgTGV0dGVyV29y
ZFNwYWNpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NT
UHJvcGVydHlXb3JkU3BhY2luZywgV29yZFNwYWNpbmcsIExldHRlcldvcmRTcGFjaW5nKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpbnQgd2lkdGgg
PSAwOwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElk
ZW50KCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKLSAgICAgICAgICAgIHdpZHRoID0gMDsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0
ZUxlbmd0aDxpbnQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgdXNlU1ZHWm9vbVJ1bGVz
KG1fZWxlbWVudCkgPyAxLjBmIDogem9vbUZhY3Rvcik7Ci0gICAgICAgIH0KLSAgICAgICAgc3dp
dGNoIChpZCkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldExldHRlclNwYWNpbmcod2lkdGgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKLSAgICAgICAgICAgIG1f
c3R5bGUtPnNldFdvcmRTcGFjaW5nKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgLy8gIyMjIG5lZWRzIHRoZSBkZWZpbml0aW9ucyBpbiByZW5kZXJzdHlsZQotICAgICAg
ICBkZWZhdWx0OiBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5E
X0lOSVRJQUxfQU5EX1BSSU1JVElWRSh3b3JkQnJlYWssIFdvcmRCcmVhaykKICAgICAgICAgcmV0
dXJuOwpAQCAtNDQ5OCw3ICs0NDM2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5KGludAogICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVy
Rm9udChtX2NoZWNrZXIubV9kb2N1bWVudC0+cHJpbnRpbmcoKSk7CiAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBmYWN0b3IuCi0gICAgICAgICAgICAgICAg
Zm9udERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lm
aWVkU2l6ZShtX2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0
aW9uLmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVz
ZVNWR1pvb21SdWxlcyhtX2VsZW1lbnQpKSk7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0
aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShtX2No
ZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1
dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVzZVNWR1pvb21SdWxl
cygpKSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihm
b250RGVzY3JpcHRpb24pKQogICAgICAgICAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7
CiAgICAgICAgICAgICB9CkBAIC01MzcxLDYgKzUzMDksMTEgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdo
dFJhZGl1czoKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKICAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlclNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhv
cml6b250YWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNh
bFNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdvcmRTcGFjaW5nOgogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0
UmVuZGVyaW5nOgpAQCAtNjEzNSw5ICs2MDc4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpj
aGVja0ZvckdlbmVyaWNGYQogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRGb250U2l6ZShGb250
RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYXQgc2l6ZSkKIHsKICAgICBmb250RGVz
Y3JpcHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzaXplKTsKLQotICAgIGJvb2wgdXNlU1ZHWm9vbVJ1
bGVzID0gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7Ci0gICAgZm9udERl
c2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6
ZShtX2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlz
QWJzb2x1dGVTaXplKCksIHNpemUsIHVzZVNWR1pvb21SdWxlcykpOyAKKyAgICBmb250RGVzY3Jp
cHRpb24uc2V0Q29tcHV0ZWRTaXplKGdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKG1f
Y2hlY2tlci5tX2RvY3VtZW50LCBtX3N0eWxlLmdldCgpLCBmb250RGVzY3JpcHRpb24uaXNBYnNv
bHV0ZVNpemUoKSwgc2l6ZSwgdXNlU1ZHWm9vbVJ1bGVzKCkpKTsKIH0KIAogZmxvYXQgQ1NTU3R5
bGVTZWxlY3Rvcjo6Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQqIGRv
Y3VtZW50LCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0IHNw
ZWNpZmllZFNpemUsIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA4OTIyNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw3ICsxNzYsMTAgQEAg
cHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgc2V0Rm9udFNpemUoRm9udERlc2Ny
aXB0aW9uJiwgZmxvYXQgc2l6ZSk7CiAgICAgICAgIHN0YXRpYyBmbG9hdCBnZXRDb21wdXRlZFNp
emVGcm9tU3BlY2lmaWVkU2l6ZShEb2N1bWVudCosIFJlbmRlclN0eWxlKiwgYm9vbCBpc0Fic29s
dXRlU2l6ZSwgZmxvYXQgc3BlY2lmaWVkU2l6ZSwgYm9vbCB1c2VTVkdab29tUnVsZXMpOworCiAg
ICAgcHVibGljOgorICAgICAgICBib29sIHVzZVNWR1pvb21SdWxlcygpOworCiAgICAgICAgIENv
bG9yIGdldENvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKikgY29uc3Q7
CiAKICAgICAgICAgYm9vbCBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJp
bmcmKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100765</attachid>
            <date>2011-07-13 21:23:28 -0700</date>
            <delta_ts>2011-07-14 18:29:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62957-20110714142325.patch</filename>
            <type>text/plain</type>
            <size>19377</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwOTc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDctMTMgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCisKKyAgICAgICAgSW50cm9kdWNlIHRlbXBsYXRlZCBjb21wdXRl
IGxlbmd0aCBjbGFzcyBpbiBDU1NTdHlsZUFwcGx5UHJvcGVydHksIGFuZCB1c2UgdG8gaGFuZGxl
IHNldmVyYWwgQ1NTIHByb3BlcnRpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02Mjk1NworCisgICAgICAgIE5vIG5ldyB0ZXN0cyAvIHJlZmFjdG9y
aW5nIG9ubHkuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgpOgorICAgICAgICBB
ZGQgY29tcHV0ZUxlbmd0aCBmdW5jdGlvbiB0aGF0IHJldHVybnMgdW5zaWduZWQgc2hvcnQuCisg
ICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5Q29tcHV0ZUxlbmd0aDo6QXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGgp
OgorICAgICAgICBBZGRlZCBjbGFzcyB0byBoYW5kbGUgY29tcHV0ZUxlbmd0aCBiYXNlZCBwcm9w
ZXJ0aWVzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHls
ZUFwcGx5UHJvcGVydHkpOgorICAgICAgICBJbml0aWFsaXplIEFwcGx5UHJvcGVydHlDb21wdXRl
TGVuZ3RoIGZvciBhcHByb3ByaWF0ZSBwcm9wZXJ0aWVzLgorICAgICAgICAqIGNzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnVzZVNW
R1pvb21SdWxlcyk6CisgICAgICAgIE1ha2UgdGhpcyBhIHB1YmxpYyBtZW1iZXIgZnVuY3Rpb24g
aW5zdGVhZCBvZiBhIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgIFJlbW92ZWQgY29kZSBu
b3cgaW1wbGVtZW50ZWQgaW4gQ1NTU3R5bGVBcHBseVByb3BlcnR5LgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c2V0Rm9udFNpemUpOgorICAgICAgICBVc2UgbmV3IHVzZVNW
R1pvb21SdWxlcyBmdW5jdGlvbi4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgor
ICAgICAgICBBZGQgaW50ZXJmYWNlIGZvciB1c2VTVkdab29tUnVsZXMuCisKIDIwMTEtMDctMTMg
IE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1NoYWRvd0Nv
bnRlbnRFbGVtZW50XSBmb3J3YXJkZWQgbm9kZSBzaG91bGQgYmUgYWJsZSB0byBhY2Nlc3MgaXRz
IGhvc3RpbmcgY29udGVudCBlbGVtZW50LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCShyZXZpc2lvbiA5MDk3NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsyOTEsMTEgQEAg
dGVtcGxhdGU8PiBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcAogICAgIHJldHVybiByb3Vu
ZEZvckltcHJlY2lzZUNvbnZlcnNpb248c2hvcnQsIFNIUlRfTUFYLCBTSFJUX01JTj4oY29tcHV0
ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250
U2l6ZSkpOwogfQogCit0ZW1wbGF0ZTw+IHVuc2lnbmVkIHNob3J0IENTU1ByaW1pdGl2ZVZhbHVl
Ojpjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSwgZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUpCit7CisgICAgcmV0
dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjx1bnNpZ25lZCBzaG9ydCwgVVNIUlRfTUFY
LCAwPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNv
bXB1dGluZ0ZvbnRTaXplKSk7Cit9CisKIHRlbXBsYXRlPD4gZmxvYXQgQ1NTUHJpbWl0aXZlVmFs
dWU6OmNvbXB1dGVMZW5ndGgoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBkb3VibGUgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RT
dHlsZSwgbXVsdGlwbGllciwgY29tcHV0aW5nRm9udFNpemUpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiA5MDk3NikKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODksNyArMTg5LDYgQEAgcHJpdmF0ZToKICAgICBJbml0aWFsRnVuY3Rpb24gbV9p
bml0aWFsOwogfTsKIAotLy8gQ1NTUHJvcGVydHlEaXJlY3Rpb24KIGNsYXNzIEFwcGx5UHJvcGVy
dHlEaXJlY3Rpb24gOiBwdWJsaWMgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8VGV4dERpcmVjdGlvbj4g
ewogcHVibGljOgogICAgIEFwcGx5UHJvcGVydHlEaXJlY3Rpb24oR2V0dGVyRnVuY3Rpb24gZ2V0
dGVyLCBTZXR0ZXJGdW5jdGlvbiBzZXR0ZXIsIEluaXRpYWxGdW5jdGlvbiBpbml0aWFsKQpAQCAt
Mzg3LDQyICszODYsNDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgKENTU1N0eWxlU2VsZWN0b3I6
OiptX21hcEZpbGwpKENTU1Byb3BlcnR5SUQsIEZpbGxMYXllciosIENTU1ZhbHVlKik7CiB9Owog
Ci1jbGFzcyBBcHBseVByb3BlcnR5V2lkdGggOiBwdWJsaWMgQXBwbHlQcm9wZXJ0eURlZmF1bHRC
YXNlPHVuc2lnbmVkIHNob3J0PiB7CitlbnVtIENvbXB1dGVMZW5ndGhOb3JtYWwge05vcm1hbERp
c2FibGVkID0gMCwgTm9ybWFsRW5hYmxlZH07CitlbnVtIENvbXB1dGVMZW5ndGhUaGlja25lc3Mg
e1RoaWNrbmVzc0Rpc2FibGVkID0gMCwgVGhpY2tuZXNzRW5hYmxlZH07CitlbnVtIENvbXB1dGVM
ZW5ndGhTVkdab29tIHtTVkdab29tRGlzYWJsZWQgPSAwLCBTVkdab29tRW5hYmxlZH07Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwKKyAgICAgICAgICBDb21wdXRlTGVuZ3RoTm9ybWFsIG5vcm1hbEVu
YWJsZWQgPSBOb3JtYWxEaXNhYmxlZCwKKyAgICAgICAgICBDb21wdXRlTGVuZ3RoVGhpY2tuZXNz
IHRoaWNrbmVzc0VuYWJsZWQgPSBUaGlja25lc3NEaXNhYmxlZCwKKyAgICAgICAgICBDb21wdXRl
TGVuZ3RoU1ZHWm9vbSBzdmdab29tRW5hYmxlZCA9IFNWR1pvb21EaXNhYmxlZD4KK2NsYXNzIEFw
cGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoIDogcHVibGljIEFwcGx5UHJvcGVydHlEZWZhdWx0QmFz
ZTxUPiB7CiBwdWJsaWM6Ci0gICAgQXBwbHlQcm9wZXJ0eVdpZHRoKEdldHRlckZ1bmN0aW9uIGdl
dHRlciwgU2V0dGVyRnVuY3Rpb24gc2V0dGVyLCBJbml0aWFsRnVuY3Rpb24gaW5pdGlhbCkKLSAg
ICAgICAgOiBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8dW5zaWduZWQgc2hvcnQ+KGdldHRlciwg
c2V0dGVyLCBpbml0aWFsKQorICAgIEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoKHR5cGVuYW1l
IEFwcGx5UHJvcGVydHlEZWZhdWx0QmFzZTxUPjo6R2V0dGVyRnVuY3Rpb24gZ2V0dGVyLCB0eXBl
bmFtZSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8VD46OlNldHRlckZ1bmN0aW9uIHNldHRlciwg
dHlwZW5hbWUgQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPFQ+OjpJbml0aWFsRnVuY3Rpb24gaW5p
dGlhbCkKKyAgICAgICAgOiBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8VD4oZ2V0dGVyLCBzZXR0
ZXIsIGluaXRpYWwpCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
YXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKSBj
b25zdAogICAgIHsKKyAgICAgICAgLy8gbm90ZTogQ1NTUHJvcGVydHlMZXR0ZXIvV29yZFNwYWNp
bmcgcmlnaHQgbm93IHNldHMgdG8gemVybyBpZiBpdCdzIG5vdCBhIHByaW1pdGl2ZSB2YWx1ZSBm
b3Igc29tZSByZWFzb24uLi4KICAgICAgICAgaWYgKCF2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmlt
aXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwotICAg
ICAgICBzaG9ydCB3aWR0aDsKLSAgICAgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS0+Z2V0SWRl
bnQoKSkgewotICAgICAgICBjYXNlIENTU1ZhbHVlVGhpbjoKLSAgICAgICAgICAgIHdpZHRoID0g
MTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENTU1ZhbHVlTWVkaXVtOgotICAg
ICAgICAgICAgd2lkdGggPSAzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NT
VmFsdWVUaGljazoKLSAgICAgICAgICAgIHdpZHRoID0gNTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKLSAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0
aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8c2hvcnQ+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rv
ci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgp
KTsKLSAgICAgICAgICAgIC8vIENTUzIgYm94IG1vZGVsIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZl
IGxlbmd0aHMgZm9yIGJvcmRlcnMuCi0gICAgICAgICAgICBpZiAod2lkdGggPCAwKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGludCBpZGVudCA9IHByaW1pdGl2ZVZhbHVl
LT5nZXRJZGVudCgpOworICAgICAgICBUIGxlbmd0aDsKKyAgICAgICAgaWYgKG5vcm1hbEVuYWJs
ZWQgJiYgaWRlbnQgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDA7
CisgICAgICAgIH0gZWxzZSBpZiAodGhpY2tuZXNzRW5hYmxlZCAmJiBpZGVudCA9PSBDU1NWYWx1
ZVRoaW4pIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDE7CisgICAgICAgIH0gZWxzZSBpZiAodGhp
Y2tuZXNzRW5hYmxlZCAmJiBpZGVudCA9PSBDU1NWYWx1ZU1lZGl1bSkgeworICAgICAgICAgICAg
bGVuZ3RoID0gMzsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlja25lc3NFbmFibGVkICYmIGlkZW50
ID09IENTU1ZhbHVlVGhpY2spIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDU7CisgICAgICAgIH0g
ZWxzZSBpZiAoaWRlbnQgPT0gQ1NTVmFsdWVJbnZhbGlkKSB7CisgICAgICAgICAgICBmbG9hdCB6
b29tID0gKHN2Z1pvb21FbmFibGVkICYmIHNlbGVjdG9yLT51c2VTVkdab29tUnVsZXMoKSkgPyAx
LjBmIDogc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKTsKKyAgICAgICAgICAgIGxl
bmd0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPFQ+KHNlbGVjdG9yLT5zdHlsZSgp
LCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCB6b29tKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgbGVuZ3RoID0g
MDsKICAgICAgICAgfQogCi0gICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCB3aWR0
aCk7CisgICAgICAgIHNldFZhbHVlKHNlbGVjdG9yLT5zdHlsZSgpLCBsZW5ndGgpOwogICAgIH0K
IH07CiAKQEAgLTU4MiwxMiArNTg3LDEyIEBAIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5
bGVBcHBseVByb3AKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21TdHlsZSwgbmV3IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3JkZXJTdHlsZT4oJlJlbmRlclN0
eWxlOjpib3JkZXJCb3R0b21TdHlsZSwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21TdHls
ZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUpKTsKICAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIG5ldyBBcHBseVByb3BlcnR5RGVmYXVs
dDxFQm9yZGVyU3R5bGU+KCZSZW5kZXJTdHlsZTo6Ym9yZGVyTGVmdFN0eWxlLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlckxlZnRTdHlsZSwgJlJlbmRlclN0eWxlOjppbml0aWFsQm9yZGVyU3R5bGUp
KTsKIAotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBu
ZXcgQXBwbHlQcm9wZXJ0eVdpZHRoKCZSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wV2lkdGgsICZSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyVG9wV2lkdGgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldp
ZHRoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0
aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVyU3R5bGU6OmJvcmRlclJpZ2h0V2lkdGgs
ICZSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjppbml0aWFs
Qm9yZGVyV2lkdGgpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21XaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVyU3R5bGU6OmJvcmRlckJv
dHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5
bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOwotICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlXaWR0aCgmUmVuZGVyU3R5bGU6
OmJvcmRlckxlZnRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0V2lkdGgsICZSZW5k
ZXJTdHlsZTo6aW5pdGlhbEJvcmRlcldpZHRoKSk7Ci0gICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5T3V0bGluZVdpZHRoLCBuZXcgQXBwbHlQcm9wZXJ0eVdpZHRoKCZSZW5kZXJTdHls
ZTo6b3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldE91dGxpbmVXaWR0aCwgJlJlbmRlclN0
eWxlOjppbml0aWFsQm9yZGVyV2lkdGgpKTsKLSAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsIG5ldyBBcHBseVByb3BlcnR5V2lkdGgoJlJlbmRl
clN0eWxlOjpjb2x1bW5SdWxlV2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVsZVdpZHRo
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOworICAgIHNldFByb3BlcnR5SGFu
ZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1dGVM
ZW5ndGg8dW5zaWduZWQgc2hvcnQsIE5vcm1hbERpc2FibGVkLCBUaGlja25lc3NFbmFibGVkPigm
UmVuZGVyU3R5bGU6OmJvcmRlclRvcFdpZHRoLCAmUmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFdp
ZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOworICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIG5ldyBBcHBseVByb3BlcnR5Q29t
cHV0ZUxlbmd0aDx1bnNpZ25lZCBzaG9ydCwgTm9ybWFsRGlzYWJsZWQsIFRoaWNrbmVzc0VuYWJs
ZWQ+KCZSZW5kZXJTdHlsZTo6Ym9yZGVyUmlnaHRXaWR0aCwgJlJlbmRlclN0eWxlOjpzZXRCb3Jk
ZXJSaWdodFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0aCkpOworICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBuZXcgQXBwbHlQ
cm9wZXJ0eUNvbXB1dGVMZW5ndGg8dW5zaWduZWQgc2hvcnQsIE5vcm1hbERpc2FibGVkLCBUaGlj
a25lc3NFbmFibGVkPigmUmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5
bGU6OnNldEJvcmRlckJvdHRvbVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJXaWR0
aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCwg
bmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCBOb3JtYWxEaXNh
YmxlZCwgVGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0eWxlOjpib3JkZXJMZWZ0V2lkdGgsICZS
ZW5kZXJTdHlsZTo6c2V0Qm9yZGVyTGVmdFdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3Jk
ZXJXaWR0aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU91dGxpbmVXaWR0
aCwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCBOb3JtYWxE
aXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0eWxlOjpvdXRsaW5lV2lkdGgsICZS
ZW5kZXJTdHlsZTo6c2V0T3V0bGluZVdpZHRoLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJX
aWR0aCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGVXaWR0aCwgbmV3IEFwcGx5UHJvcGVydHlDb21wdXRlTGVuZ3RoPHVuc2lnbmVkIHNob3J0LCBO
b3JtYWxEaXNhYmxlZCwgVGhpY2tuZXNzRW5hYmxlZD4oJlJlbmRlclN0eWxlOjpjb2x1bW5SdWxl
V2lkdGgsICZSZW5kZXJTdHlsZTo6c2V0Q29sdW1uUnVsZVdpZHRoLCAmUmVuZGVyU3R5bGU6Omlu
aXRpYWxCb3JkZXJXaWR0aCkpOwogCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5
Qm9yZGVyVG9wLCBuZXcgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlPihwcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciksIHByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlKSwgcHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9y
ZGVyVG9wV2lkdGgpKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHQsIG5ldyBBcHBseVByb3BlcnR5RXhwYW5kaW5nPFN1cHByZXNzVmFsdWU+KHByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IpLCBwcm9wZXJ0eUhhbmRsZXIoQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFN0eWxlKSwgcHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHRXaWR0aCkpKTsKQEAgLTYwNiw2ICs2MTEsMTMgQEAgQ1NTU3R5bGVBcHBseVByb3Bl
cnR5OjpDU1NTdHlsZUFwcGx5UHJvcAogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eUJvcmRlclJhZGl1cywgbmV3IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8RXhwYW5kVmFsdWU+KHBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMpLCBwcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cyksIHByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMpLCBwcm9wZXJ0eUhhbmRsZXIoQ1NTUHJv
cGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cykpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXMsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzKTsK
IAorICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250
YWxTcGFjaW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8c2hvcnQ+KCZSZW5kZXJT
dHlsZTo6aG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6c2V0SG9yaXpvbnRh
bEJvcmRlclNwYWNpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbEhvcml6b250YWxCb3JkZXJTcGFj
aW5nKSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVy
dGljYWxTcGFjaW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUNvbXB1dGVMZW5ndGg8c2hvcnQ+KCZSZW5k
ZXJTdHlsZTo6dmVydGljYWxCb3JkZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OnNldFZlcnRpY2Fs
Qm9yZGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjppbml0aWFsVmVydGljYWxCb3JkZXJTcGFjaW5n
KSk7CisgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgbmV3
IEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZT4ocHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcpLCBwcm9wZXJ0eUhhbmRsZXIo
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcpKSk7CisKKyAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUNv
bXB1dGVMZW5ndGg8aW50LCBOb3JtYWxFbmFibGVkLCBUaGlja25lc3NEaXNhYmxlZCwgU1ZHWm9v
bUVuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6bGV0dGVyU3BhY2luZywgJlJlbmRlclN0eWxlOjpzZXRM
ZXR0ZXJTcGFjaW5nLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxMZXR0ZXJXb3JkU3BhY2luZykpOwor
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdvcmRTcGFjaW5nLCBuZXcgQXBwbHlQ
cm9wZXJ0eUNvbXB1dGVMZW5ndGg8aW50LCBOb3JtYWxFbmFibGVkLCBUaGlja25lc3NEaXNhYmxl
ZCwgU1ZHWm9vbUVuYWJsZWQ+KCZSZW5kZXJTdHlsZTo6d29yZFNwYWNpbmcsICZSZW5kZXJTdHls
ZTo6c2V0V29yZFNwYWNpbmcsICZSZW5kZXJTdHlsZTo6aW5pdGlhbExldHRlcldvcmRTcGFjaW5n
KSk7CisKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlGb250U3R5bGUsIG5ldyBB
cHBseVByb3BlcnR5Rm9udDxGb250SXRhbGljPigmRm9udERlc2NyaXB0aW9uOjppdGFsaWMsICZG
b250RGVzY3JpcHRpb246OnNldEl0YWxpYywgRm9udEl0YWxpY09mZikpOwogICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LCBuZXcgQXBwbHlQcm9wZXJ0eUZvbnQ8
Rm9udFNtYWxsQ2Fwcz4oJkZvbnREZXNjcmlwdGlvbjo6c21hbGxDYXBzLCAmRm9udERlc2NyaXB0
aW9uOjpzZXRTbWFsbENhcHMsIEZvbnRTbWFsbENhcHNPZmYpKTsKICAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nLCBuZXcgQXBwbHlQcm9wZXJ0eUZvbnQ8VGV4
dFJlbmRlcmluZ01vZGU+KCZGb250RGVzY3JpcHRpb246OnRleHRSZW5kZXJpbmdNb2RlLCAmRm9u
dERlc2NyaXB0aW9uOjpzZXRUZXh0UmVuZGVyaW5nTW9kZSwgQXV0b1RleHRSZW5kZXJpbmcpKTsK
QEAgLTYxNiw3ICs2MjgsNiBAQCBDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxlQXBwbHlQ
cm9wCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLCBuZXcg
QXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxFeHBhbmRWYWx1ZT4obmV3IEFwcGx5UHJvcGVydHlEZWZh
dWx0PE91dGxpbmVJc0F1dG8+KCZSZW5kZXJTdHlsZTo6b3V0bGluZVN0eWxlSXNBdXRvLCAmUmVu
ZGVyU3R5bGU6OnNldE91dGxpbmVTdHlsZUlzQXV0bywgJlJlbmRlclN0eWxlOjppbml0aWFsT3V0
bGluZVN0eWxlSXNBdXRvKSwgbmV3IEFwcGx5UHJvcGVydHlEZWZhdWx0PEVCb3JkZXJTdHlsZT4o
JlJlbmRlclN0eWxlOjpvdXRsaW5lU3R5bGUsICZSZW5kZXJTdHlsZTo6c2V0T3V0bGluZVN0eWxl
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxCb3JkZXJTdHlsZSkpKTsKICAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsIG5ldyBBcHBseVByb3BlcnR5Q29sb3I8SW5o
ZXJpdEZyb21QYXJlbnQ+KCZSZW5kZXJTdHlsZTo6b3V0bGluZUNvbG9yLCAmUmVuZGVyU3R5bGU6
OnNldE91dGxpbmVDb2xvciwgJlJlbmRlclN0eWxlOjpjb2xvcikpOwogCi0KICAgICBzZXRQcm9w
ZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlPdmVyZmxvd1gsIG5ldyBBcHBseVByb3BlcnR5RGVmYXVs
dDxFT3ZlcmZsb3c+KCZSZW5kZXJTdHlsZTo6b3ZlcmZsb3dYLCAmUmVuZGVyU3R5bGU6OnNldE92
ZXJmbG93WCwgJlJlbmRlclN0eWxlOjppbml0aWFsT3ZlcmZsb3dYKSk7CiAgICAgc2V0UHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dZLCBuZXcgQXBwbHlQcm9wZXJ0eURlZmF1bHQ8
RU92ZXJmbG93PigmUmVuZGVyU3R5bGU6Om92ZXJmbG93WSwgJlJlbmRlclN0eWxlOjpzZXRPdmVy
Zmxvd1ksICZSZW5kZXJTdHlsZTo6aW5pdGlhbE92ZXJmbG93WSkpOwogICAgIHNldFByb3BlcnR5
SGFuZGxlcihDU1NQcm9wZXJ0eU92ZXJmbG93LCBuZXcgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxF
eHBhbmRWYWx1ZT4ocHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dYKSwgcHJvcGVy
dHlIYW5kbGVyKENTU1Byb3BlcnR5T3ZlcmZsb3dZKSkpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gOTA5NzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NjcsOSArMzY2
Nyw5IEBAIGlubGluZSBTVkdEaXNwbGF5UHJvcGVydHlHdWFyZDo6flNWR0Rpc3AKIC8vIHdpZHRo
L2hlaWdodC9ib3JkZXIvcGFkZGluZy8uLi4gZnJvbSB0aGUgUmVuZGVyU3R5bGUgLT4gZm9yIFNW
RyB0aGVzZSB2YWx1ZXMgd291bGQgbmV2ZXIgc2NhbGUsCiAvLyBpZiB3ZSdkIHBhc3MgYSAxLjAg
em9vbSBmYWN0b3IgZXZlcnlod2VyZS4gU28gd2Ugb25seSBwYXNzIGEgem9vbSBmYWN0b3Igb2Yg
MS4wIGZvciBzcGVjaWZpYwogLy8gcHJvcGVydGllcyB0aGF0IGFyZSBOT1QgYWxsb3dlZCB0byBz
Y2FsZSB3aXRoaW4gYSB6b29tZWQgU1ZHIGRvY3VtZW50IChsZXR0ZXIvd29yZC1zcGFjaW5nL2Zv
bnQtc2l6ZSkuCi1zdGF0aWMgaW5saW5lIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKGNvbnN0IEVsZW1l
bnQqIGUpCitib29sIENTU1N0eWxlU2VsZWN0b3I6OnVzZVNWR1pvb21SdWxlcygpCiB7Ci0gICAg
cmV0dXJuIGUgJiYgZS0+aXNTVkdFbGVtZW50KCk7CisgICAgcmV0dXJuIG1fZWxlbWVudCAmJiBt
X2VsZW1lbnQtPmlzU1ZHRWxlbWVudCgpOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCkBAIC0zNzgwLDMzICszNzgwLDYg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NT
UHJvcGVydHlXaGl0ZVNwYWNlOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9B
TkRfUFJJTUlUSVZFKHdoaXRlU3BhY2UsIFdoaXRlU3BhY2UpCiAgICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzogewotICAgICAgICBpZiAoaXNJbmhlcml0
KSB7Ci0gICAgICAgICAgICBtX3N0eWxlLT5zZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZyhtX3Bh
cmVudFN0eWxlLT5ob3Jpem9udGFsQm9yZGVyU3BhY2luZygpKTsKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZyhtX3BhcmVudFN0eWxlLT52ZXJ0aWNhbEJvcmRl
clNwYWNpbmcoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoaXNJbml0aWFsKSB7Ci0g
ICAgICAgICAgICBtX3N0eWxlLT5zZXRIb3Jpem9udGFsQm9yZGVyU3BhY2luZygwKTsKLSAgICAg
ICAgICAgIG1fc3R5bGUtPnNldFZlcnRpY2FsQm9yZGVyU3BhY2luZygwKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJI
b3Jpem9udGFsU3BhY2luZzogewotICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCho
b3Jpem9udGFsQm9yZGVyU3BhY2luZywgSG9yaXpvbnRhbEJvcmRlclNwYWNpbmcpCi0gICAgICAg
IGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNob3J0
IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxzaG9ydD4oc3R5bGUoKSwg
bV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKLSAgICAgICAgbV9zdHlsZS0+c2V0SG9y
aXpvbnRhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZzogewotICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEJvcmRlclNwYWNpbmcsIFZlcnRp
Y2FsQm9yZGVyU3BhY2luZykKLSAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21w
dXRlTGVuZ3RoPHNob3J0PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3Ip
OwotICAgICAgICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUN1cnNvcjoKICAgICAg
ICAgaWYgKGlzSW5oZXJpdCkgewogICAgICAgICAgICAgbV9zdHlsZS0+c2V0Q3Vyc29yKG1fcGFy
ZW50U3R5bGUtPmN1cnNvcigpKTsKQEAgLTM4NTIsNDEgKzM4MjUsNiBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIG1fc3R5bGUtPnNldExpc3RTdHls
ZUltYWdlKHN0eWxlSW1hZ2UoQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwgdmFsdWUpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoK
LSAgICBjYXNlIENTU1Byb3BlcnR5V29yZFNwYWNpbmc6Ci0gICAgewotICAgICAgICBpZiAoaXNJ
bmhlcml0KSB7Ci0gICAgICAgICAgICBIQU5ETEVfSU5IRVJJVF9DT05EKENTU1Byb3BlcnR5TGV0
dGVyU3BhY2luZywgbGV0dGVyU3BhY2luZywgTGV0dGVyU3BhY2luZykKLSAgICAgICAgICAgIEhB
TkRMRV9JTkhFUklUX0NPTkQoQ1NTUHJvcGVydHlXb3JkU3BhY2luZywgd29yZFNwYWNpbmcsIFdv
cmRTcGFjaW5nKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
aWYgKGlzSW5pdGlhbCkgewotICAgICAgICAgICAgSEFORExFX0lOSVRJQUxfQ09ORF9XSVRIX1ZB
TFVFKENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZywgTGV0dGVyU3BhY2luZywgTGV0dGVyV29yZFNw
YWNpbmcpCi0gICAgICAgICAgICBIQU5ETEVfSU5JVElBTF9DT05EX1dJVEhfVkFMVUUoQ1NTUHJv
cGVydHlXb3JkU3BhY2luZywgV29yZFNwYWNpbmcsIExldHRlcldvcmRTcGFjaW5nKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpbnQgd2lkdGggPSAw
OwotICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUgJiYgcHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkgPT0gQ1NTVmFsdWVOb3JtYWwpIHsKLSAgICAgICAgICAgIHdpZHRoID0gMDsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aDxpbnQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgdXNlU1ZHWm9vbVJ1bGVzKG1f
ZWxlbWVudCkgPyAxLjBmIDogem9vbUZhY3Rvcik7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNo
IChpZCkgewotICAgICAgICBjYXNlIENTU1Byb3BlcnR5TGV0dGVyU3BhY2luZzoKLSAgICAgICAg
ICAgIG1fc3R5bGUtPnNldExldHRlclNwYWNpbmcod2lkdGgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkU3BhY2luZzoKLSAgICAgICAgICAgIG1fc3R5
bGUtPnNldFdvcmRTcGFjaW5nKHdpZHRoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgLy8gIyMjIG5lZWRzIHRoZSBkZWZpbml0aW9ucyBpbiByZW5kZXJzdHlsZQotICAgICAgICBk
ZWZhdWx0OiBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdvcmRCcmVhazoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUxfQU5EX1BSSU1JVElWRSh3b3JkQnJlYWssIFdvcmRCcmVhaykKICAgICAgICAgcmV0dXJu
OwpAQCAtNDQ5Niw3ICs0NDM0LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnR5KGludAogICAgICAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRVc2VQcmludGVyRm9u
dChtX2NoZWNrZXIubV9kb2N1bWVudC0+cHJpbnRpbmcoKSk7CiAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgIC8vIEhhbmRsZSB0aGUgem9vbSBmYWN0b3IuCi0gICAgICAgICAgICAgICAgZm9u
dERlc2NyaXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVk
U2l6ZShtX2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9u
LmlzQWJzb2x1dGVTaXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVzZVNW
R1pvb21SdWxlcyhtX2VsZW1lbnQpKSk7CisgICAgICAgICAgICAgICAgZm9udERlc2NyaXB0aW9u
LnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZShtX2NoZWNr
ZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJzb2x1dGVT
aXplKCksIGZvbnREZXNjcmlwdGlvbi5zcGVjaWZpZWRTaXplKCksIHVzZVNWR1pvb21SdWxlcygp
KSk7CiAgICAgICAgICAgICAgICAgaWYgKG1fc3R5bGUtPnNldEZvbnREZXNjcmlwdGlvbihmb250
RGVzY3JpcHRpb24pKQogICAgICAgICAgICAgICAgICAgICBtX2ZvbnREaXJ0eSA9IHRydWU7CiAg
ICAgICAgICAgICB9CkBAIC01Mzk4LDYgKzUzMzYsMTEgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJh
ZGl1czoKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1czoKICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXM6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJvcmRlclNwYWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6
b250YWxTcGFjaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNw
YWNpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdvcmRTcGFjaW5nOgogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50OgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0UmVu
ZGVyaW5nOgpAQCAtNjE2Miw5ICs2MTA1LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVj
a0ZvckdlbmVyaWNGYQogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRGb250U2l6ZShGb250RGVz
Y3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgZmxvYXQgc2l6ZSkKIHsKICAgICBmb250RGVzY3Jp
cHRpb24uc2V0U3BlY2lmaWVkU2l6ZShzaXplKTsKLQotICAgIGJvb2wgdXNlU1ZHWm9vbVJ1bGVz
ID0gbV9lbGVtZW50ICYmIG1fZWxlbWVudC0+aXNTVkdFbGVtZW50KCk7Ci0gICAgZm9udERlc2Ny
aXB0aW9uLnNldENvbXB1dGVkU2l6ZShnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVkU2l6ZSht
X2NoZWNrZXIubV9kb2N1bWVudCwgbV9zdHlsZS5nZXQoKSwgZm9udERlc2NyaXB0aW9uLmlzQWJz
b2x1dGVTaXplKCksIHNpemUsIHVzZVNWR1pvb21SdWxlcykpOyAKKyAgICBmb250RGVzY3JpcHRp
b24uc2V0Q29tcHV0ZWRTaXplKGdldENvbXB1dGVkU2l6ZUZyb21TcGVjaWZpZWRTaXplKG1fY2hl
Y2tlci5tX2RvY3VtZW50LCBtX3N0eWxlLmdldCgpLCBmb250RGVzY3JpcHRpb24uaXNBYnNvbHV0
ZVNpemUoKSwgc2l6ZSwgdXNlU1ZHWm9vbVJ1bGVzKCkpKTsKIH0KIAogZmxvYXQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6Z2V0Q29tcHV0ZWRTaXplRnJvbVNwZWNpZmllZFNpemUoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBSZW5kZXJTdHlsZSogc3R5bGUsIGJvb2wgaXNBYnNvbHV0ZVNpemUsIGZsb2F0IHNwZWNp
ZmllZFNpemUsIGJvb2wgdXNlU1ZHWm9vbVJ1bGVzKQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5oCShyZXZpc2lvbiA5MDk3NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsMTAgQEAgcHVi
bGljOgogICAgICAgICB2b2lkIHNldEZvbnRTaXplKEZvbnREZXNjcmlwdGlvbiYsIGZsb2F0IHNp
emUpOwogCiAgICAgICAgIHN0YXRpYyBmbG9hdCBnZXRDb21wdXRlZFNpemVGcm9tU3BlY2lmaWVk
U2l6ZShEb2N1bWVudCosIFJlbmRlclN0eWxlKiwgYm9vbCBpc0Fic29sdXRlU2l6ZSwgZmxvYXQg
c3BlY2lmaWVkU2l6ZSwgYm9vbCB1c2VTVkdab29tUnVsZXMpOworCiAgICAgcHVibGljOgorICAg
ICAgICBib29sIHVzZVNWR1pvb21SdWxlcygpOworCiAgICAgICAgIENvbG9yIGdldENvbG9yRnJv
bVByaW1pdGl2ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKikgY29uc3Q7CiAKICAgICAgICAgYm9v
bCBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>